Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

平台简介

Good权限管理系统是作者学习springBoot时基于springBoot开发的一套轻量级的权限系统,其目的是形成一套属于自己的通用的开发框架 以后来项目的时候就可以直接基于此平台进行开发,减少重复工作量. 目前还有好多功能未实现,后续会陆续完成并全部开源!

  • 访问地址:

    链接: http://localhost:8081/admin/index

    用户名: admin

    密码: 123

  • 演示地址 - http://139.224.112.51:8082/admin/index - 账号:test 密码:test

  • 待完成:

    1. 加密规则 加盐 (先不解决)
    2. 项目启动 初始化admin权限信息 (先不解决)
    3. 添加完菜单资源后,超级管理员自动分配权限(先不解决)
    4. 添加spring cache使用基于注解方式的缓存管理,同时可以切换任意第三方缓存

主要功能介绍

  1. 权限: 使用Shiro进行权限控制,灵活的可控制到页面或按钮,满足绝大部分的权限需求.
  2. 数据库: 使用Druid数据库连接池,可以监控数据库访问性能,SQL执行效率进行SQL优化,同时使用多环境配置方式可以动态切换到开发环境、测试环境、生产环境.
  3. 日志:使用Logback进行日志输出,使用多环境配置方式可以动态切换到开发环境、测试环境、生产环境,同时基于时间和文件大小分割日志文件并进行归档.
  4. 任务调度: 使用Spring+Quartz,基于数据库的分布式定时任务,既可以通过Http的方式调用其它项目的RESTFull接口,也可以执行自己本地的调度任务,支持动态增加、删除、修改任务、暂停|恢复、立即执行一次、查看执行记录,无需重启.
  5. 公共异常处理和数据校验

内置功能

  1. 系统管理
    • 用户管理(已完成)
    • 角色管理(已完成)
    • 权限管理(已完成)
    • 组织机构(未完成)
    • 字典管理(未完成)
    • SQL监控(已完成)
    • 在线用户管理
  2. 调度管理(完成)
  3. 内容管理(未完成)
  4. 日志管理(已完成)

开发环境

  • Intellij IDEA 2016.2
  • jdk 1.8
  • Maven 3.3.9
  • Tomcat 8.5
  • Mysql 5.7
  • Navicat for Mysql
  • Google浏览器

技术选型

1、后端

  • 核心框架:Spring Boot 1.5.4
  • 视图框架:Spring MVC 4.3.9
  • 安全框架:Apache Shiro 1.3.2
  • 任务调度:Spring+Quartz 2.x
  • 持久层框架:Mybatis 3.4.4 + 通用Mapper 3.4.2
  • 服务端验证:Hibernate validator 5.3.5
  • API生成工具: Swagger2
  • 单元测试:Junit 4.12
  • 网络客户端:Spring RestTemplate(OKGO) + OKHttp
  • Email客户端:Spring + JavaMail
  • 模板引擎:Thymeleaf 3.0.0
  • 数据库连接池:Alibaba Druid 1.1.0
  • 缓存框架:Spring Cache + Ehcache 2.5.3
  • 日志管理:SLF4J 1.7.22 + Logback 1.1.8
  • 分页插件:PageHelper 5.0.3
  • 工具类:Apache Commons、Jackson 2.2、Lombok 1.16.14、Hutool 2.16.0、feilong-core 1.10.5

1、前端

  • UI框架:H-UI 3.0
  • JS框架:jQuery 1.11.0
  • 表单验证控件:Jquery-validation 1.14.0
  • 树结构控件:zTree v3
  • 分页控件:laypage 1.3
  • 弹出层组件:layer 2.4
  • 富文本编辑器:ueditor 1.4.3
  • 上传文件控件:webuploader 0.1.5
  • 日期选择控件:My97DatePicker 4.8
  • 数据图表:echarts 3.4.0
  • 表单美化插件:iCheck 0.7

功能展示

输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明

特别说明

因为本人能力有限,如果系统中存在任何Bug或者缺陷,欢迎大家及时告知我,希望于大家共同学习!

QQ交流群641213116

输入图片说明

注:不定期发放福利干货!!

特别鸣谢

更新日志

计划更新

  1. 会话管理
    • 对在线用户session管理和基本信息查看;可以手动踢出.
  2. 字典管理

2017年9月24日

  1. 解决quartz 触发器是CronTrigger模式时 调用scheduler.rescheduleJob方法后会立即执行任务的问题
  2. 解决修改定时任务cron表达式后执行日志没有更新的问题

2017年9月7日

  1. 解决定时任务里无法通过注解自动注入spring容器中的bean的问题

2017年8月20日

  1. 权限列表使用treetable展示,增加用户体验

2017年8月14日

  1. 解决授权时无法只选择列表的BUG
    • zTree取消全部子节点时,父节点不会取消

2017年8月12日

  1. 重新设计登录页设计,开启炫酷模式
  2. 解决字符串自动去除前后空格的BUG

2017年8月11日

  1. 校验上传文件是否合法
    • 校验文件后缀扩展名是否合法
    • 校验上传文件的头信息,防止非法用户通过更改文件后缀名绕过第一步校验

2017年8月9日

  1. 解决退出登录时无法清除认证缓存的问题.
    • 由于认证成功存入缓存的是整个对象,shiro提供的退出方法无法清除,还有之前所有的操作都是针对该对象进行的,所以重写了退出过滤器,自己手动去清除认证缓存,这样改动是最小的.

2017年8月5日

  1. 定义welcome-file-list页面
  2. 部署外网演示地址
  3. 配置Nginx访问图片(配置文件见群共享)
  4. 修改当前登录密码后,退出登录的逻辑走的是shiro的提供的默认方法,无法清除当前账号登录的次数的相关信息,所以再次登录明明是执行过了退出,确还提醒已经在别的地方登录了

    解决办法

    1. 执行退出走自定义退出过滤器
    2. 后台对shiro的退出做二次封装(未实现)

2017年8月1日

  1. 重写规划包的目录结构,按模块进行划分
  2. 判断如果已经登录了,还访问login登录地址,做重定向到原来的地址

2017年7月31日

  1. 引入feilong-core 1.10.5包
  2. 并发登录人数控制,限制一个账号只能一处登录,踢出前者(自定义KickoutSessionControlFilter和LoginFilter)
    • Ajax请求,前端给出选择框,选择重新登录后执行退出并跳转到登录页面
    • 传统请求,被踢出后跳转到登录页面,弹窗提示
    • 添加登录过滤器,判断登录账号是否已经在其他地方登录,并进行踢出询问,并展示已经登录用户的信息包括IP和登录时间
  3. 自定义退出过滤器,实现清除缓存

2017年7月20日

  1. 修复BUG
  2. 重构角色授权功能和添加角色分离
  3. 富文本编辑器更换为UEditor(待完成),去除h-ui中多余的依赖
  4. 升级springBoot版本到1.5.4
  5. 升级Mybatis到3.4.4,mapper-spring-boot-starter到1.3.0,pagehelper-spring-boot-starter到1.1.2
  6. 升级druid-spring-boot-starter到1.1.2 注:V1.1.1不支持connectionPropreties配置,所以无法配置ConfigFilter进行密码加密访问.
  7. 重新配置和实现文件上传

2017年7月18日

  1. 解决修改角色授权时不能立即生效问题,目前只解决了当前用户角色授权时立即生效,对其他用户不能马上生效(之前遗留问题)
  2. 去除浏览器地址栏中url中JSESSIONID参数

2017年7月14日

  1. 解决通用mapper用resultType返回时 无法绑定到对象的问题
  2. 排除对二进制文件的过滤,解决字体图标无法显示

2017年6月28日

  1. 添加SpringBoot jar方式打包时,下载jar包内的文件和响应jar包内文本文件内容的例子

2017年6月27日

  1. 添加druid-spring-boot-starter
  2. 数据库密码加密
  3. druid配置细化

2017年5月27日

  1. 对异常进行细分
    • Service层抛出指定类型的RuntimeException异常
    • Controller层抛出带状态码RumtimeException异常
    • 对异常进行统一转化,并响应到客户端
  2. 重构表单重复提交校验(包括:重复提交后的提示和数据校验未通过token的刷新),全部向外抛出异常,进行统一处理
  3. 将后端数据校验结果进行客户端页面展示(待处理)

2017年5月26日

  1. 添加统一异常处理,并进行了细分
  2. 添加后端数据校验,支持分组、排序,前后端双层校验,保证数据安全性

2017年5月25日

  1. 封装layer提示插件,ajax添加遮罩层,增强客户体验度

2017年5月24日

  1. 后台对Ajax操作的,无权限、登陆超时、表单重复提交等情况响应头信息进行统一配置,前台提示的逻辑重新改造

2017年5月23日

  1. 添加防止表单重复提交校验前端js+后端token的方式
    • 对Ajax请求,提交时由于验证机制未通过,比如:用户名已存在,返回页面修改后再次提交出现token无法验证通过做处理

    解决方案: 利用ajax的全局方法 提交时自动加上token值 判断如果有返回的X-Refresh-Token-Form就更新页面所有的tokenForm值

    • 由于session是存储在服务器内存中的,在集群环境下不能保证生成token的服务器和验证token的服务器就是同一台,所以需要一种机制可以解决多服务器节点的数据共享.

    解决方案: 使用spring session实现session共享或者将token放入redis中

    • 对于多开窗口操作同一个功能 比如: 添加用户,进行限制

    采用最后打开的窗口有效的方式,并进行页面过期弹窗友好提示

    • 安全考虑,可以给formToken设置一个有效期

    比如后期放入redis,可以方便借助它的生命周期控制;或者在formToken中加入时间戳进行比对.

    • 前端Ajax请求前全局禁用页面submit按钮既可以一定程度防止表单的重复提交,又能大大减轻服务器端访问压力,响应后重新启用按钮.

2017年5月22日

  1. 新增调度任务查看详情
  2. 新增调度日志查看
  3. 正在执行,执行完成(待实现)

2017年5月4日

  1. 动态任务调度
  2. 改造权限管理模块
  3. 日志UI界面展示

2017年4月24日

  1. spring boot yml文件多环境配置
  2. thymeleaf 布局调整

Comments ( 0 )

Sign in for post a comment

About

Good权限管理系统是作者学习springBoot时基于springBoot开发的一套轻量级的权限系统,其目的是形成一套属于自己的通用的开发框架 以后来项目的时候就可以直接基于此平台进行开发,减少重复工作量;使用Spring Boot、Shiro、MyBatis、H-UI等框架,包含:管理员管理、角色管理、权限管理、调度管理等 spread retract
Cancel

Releases

No release

Contributors

All

Activities

load more
can not load any more