spring boot后台管理系统,shiro权限管理, restful风格的接口

spring security版 源码地址:https://gitee.com/zhang.w/boot-security.git

shiro版 源码地址:https://gitee.com/zhang.w/boot-backend.git

 

随着spring boot的出现,java又上升了一个层次,以往tomcat部署war的形式也改变了,现在可以直接一个jar包、一行命令,真正实现一次编译随处运行的理念了。

     闲暇之余小威老师做了一个以spring boot为后台,layui、bootstrap、jquery、html为前端的后台管理系统,接口以restful的风格呈现,良好的语义表达,令接口uri规范又提升了一个档次,使编程更规范、更良好,也使coding有了更多的文艺气息。

     该boot-backend系统,采用了jdk1.8使用了lamdba表达式,采用了shiro进行权限控制,实现了按钮级别的权限。目前数据库采用的是mysql,表格分页用的是datatables,智能排序,orm采用的是mybatis。

     完全可以作为项目开发的脚手架,作为基础项目,根据自己项目需求进行扩展功能。

目前系统内置了一些功能:

  • 用户管理
  • 菜单管理:支持多级菜单
  • 角色管理
  • job集群:创建job、取消job、取消job、下拉搜索spring bean
  • 日志查询
  • 邮件管理
  • 文件管理:上传、删除文件
  • 公告管理:公告列表、公告未读数提醒、公告阅读人
  • Excel下载:自己在页面编写sql,数据可导出到excel,也可在页面以表格展示
  • 代码生成:根据表名,生成bean、controller、dao、mapper.xml,以及增删改查的页面

菜单列表

 

excel导出

 

添加job

swagger文档

     有一点需要特别注意,在我们使用shiro时,如果我们开启了使用redis的session共享,即借助spring-session的@EnableRedisHttpSession时,shiro的doGetAuthorizationInfo获取权限缓存可能会失效,即从缓存中获取不到权限信息了。从源码中可以看出AuthorizingRealm获取权限缓存的时候,是Object key = getAuthorizationCacheKey(principals)这样获取的,getAuthorizationCacheKey方法是直接返回PrincipalCollection对象,spring-session每次从redis中获取此对象的时候,反序列化成对象之后,对象的地址都是不同的,这就是导致的原因。

    有两个办法来解决:

     比如我们的PrincipalCollection存入的是User对象

     1、我们可以重写User的equals和hashcode。

     2、我们可以重写Reaml的getAuthorizationCacheKey方法,最好返回一个字符串,我们可以用一个前缀加上userId来作为缓存key。

     建议使用第2种方法来实现,这样更符合开闭原则。

spring security版 源码地址:https://gitee.com/zhang.w/boot-security.git

shiro版 源码地址:https://gitee.com/zhang.w/boot-backend.git

 

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值