SpringBoot2.0實戰(17)整合SpringSecurity基於數據庫登錄鑑權

通過前一篇文章 整合SpringSecurity之最簡登錄及方法鑑權,我們已經可以簡單地使用 SpringSecurity 對應用實現登錄鑑權,但是問題在於,用戶信息或者是在配置文件中,或者是在代碼中寫死,應用啓動後被加載至內存,這並不符合實際的生產需要,在實際的生產應用中,我們需要使用數據庫對用戶及角色信息進行持久化,在執行登錄操作時,從數據庫中獲取用戶信息。

目標

整合 SpringSecurity 及 MybatisPlus 實現使用讀取數據庫數據進行登陸鑑權

準備工作

創建用戶表 s_user、角色表 s_role、用戶角色關係表 s_user_role

CREATE TABLE `s_role` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `CREATE_ID` int(11) DEFAULT NULL,
  `CREATE_TIME` datetime DEFAULT NULL,
  `UPDATE_ID` int(11) DEFAULT NULL,
  `UPDATE_TIME` datetime DEFAULT NULL,
  `CODE` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '角色編碼',
  `ROLE_NAME` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '角色名稱',
  `STATE` int(2) DEFAULT '1' COMMENT '狀態(1啓用2禁用)',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='角色表';

CREATE TABLE `s_user` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `CREATE_ID` int(11) DEFAULT NULL,
  `CREATE_TIME` datetime DEFAULT NULL,
  `UPDATE_ID` int(11) DEFAULT NULL,
  `UPDATE_TIME` datetime DEFAULT NULL,
  `USER_NAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '用戶名',
  `PASSWORD` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '密碼',
  `STATE` int(2) DEFAULT '1' COMMENT '用戶狀態(-1停用1正常2被鎖定)',
  PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用戶表';

CREATE TABLE `s_user_role` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `CREATE_ID` int(11) DEFAULT NULL,
  `CREATE_TIME` datetime DEFAULT NULL,
  `USER_ID` int(11) DEFAULT NULL COMMENT '用戶外鍵',
  `ROLE_ID` int(11) DEFAULT NULL COMMENT '角色外鍵',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用戶角色表';

操作步驟

添加依賴

 

配置

配置一下數據源

編碼

實體類

角色實體類 Role,實現權限接口 GrantedAuthority

用戶實體類 user,實現權限接口 UserDetails,主要方法是 getAuthorities,用於獲取用戶的角色列表

 

用戶角色關係實體

Repository 層

分別爲三個實體類添加 Mapper

實現 UserDetailsService 接口

UserDetailsService 是 SpringSecurity 提供的登陸時用於根據用戶名獲取用戶信息的接口

 

權限配置

繼承 SpringSecurity 提供的 WebSecurityConfigurerAdapter 配置 userDetailsService 及加密方式

 

啓動類

 

驗證結果

初始化數據

執行測試用例進行初始化數據

 

校驗

網頁訪問 http://localhost:8080,將自動跳轉登錄頁,輸入 user/123456 進行登錄,可以使用 debugger 進行調試。

源碼地址

本章源碼 :https://github.com/caiyuanzi-song/boot.git

結束語

使用數據庫進行鑑權,是實際應用中最基本的需求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章