本项目是使用SpringBoot2构建的一套基于RBAC权限模型的后台管理系统,前端是微信小程序。前端
最近接了个外包,主要是针对于驾校开发一个代理小程序。目的是为了方便驾校的管理来招揽学员,同时方便维护学员和代理信息。github
本项目的业务需求比较少,是一个传统项目,核心的业务点是权限管理,这里我就采用比较规范的RBAC权限模型来开发。因为项目比较小,这里我就没有采用Shiro或SpringSecurity等权限管理框架,而是本身使用过滤器开发了一套。我认为这能够算是权限管理的雏形,若是有更复杂的权限管理需求,能够很方便的基于此扩展。apache
首先认证方面,我这里仍然采用jwt token的认证方式。这里我默认实现了记住密码的功能。即用户第一次登录成功以后返回一个token在response header中,该token的有效期为2小时,服务器端我保存一个有效期为1周的refresh token。用户在2个小时以内登陆不会返回token,2个小时和一周以内第一次携带过时token我会返回新的token在response header。一周以外refresh token失效,这里须要用户从新登陆。 这里我也是借鉴了别人的思路:segmentfault.com/a/119000001…小程序
权限管理方面,我这里共用了4张表,其实基准的RBAC权限模型最少要5张表。这里比较简单,因此我主要是用户表、角色表、权限表以及权限角色表。用户和角色是一对一的关联关系、角色和权限是一对多的关系。表结构以下:segmentfault
@ServletComponentScan(basePackages = "com.beautifulsoup.driving")
和@WebFilter
及@Order
注解,可是这里的@Order
并不能实现多个Filter的顺序性,无奈我只能采用FilterRegistrationBean
来注入Filter,同时请求第一步进入的是Filter且其不被Spring管理,故而不能经过@Autowired
注解只能构造方法注入。Filter内部用ThreadLocal保存用户信息,校验用户的权限,ThreadLocal做为线程级别对象,对于SpringSecurity中的用户信息保存也是基于此的。Spring Boot 2.1.3服务器
Spring Data Jpa微信
Spring Data Redis框架
Spring Data Mongodb
Spring Boot Mail
Swagger
Quartz
JWT Token
FastDFS
apache poi