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

结束语

使用数据库进行鉴权,是实际应用中最基本的需求。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值