本項目是使用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