Spring Security 前后端分离配置
-
创建springboot 项目并添加好Spring Security依赖
-
因为默认Security在启动项目时会自动生成随机密码不太方便登录,所以需要配置 Security 账号密码。
-
每次项目启动时候 Security会自动生成随机密码 如下图:
-
配置Security登录账号及密码
-
使用配置文件配置
-
在application.properties配置文件中 添加如下配置
-
没有application.properties 可以在
src\main\resources
新建
-
-
使用配置类配置
-
创建SecurityConfig 类
-
增加配置类注解 继承Security框架WebSecurityConfigurerAdapter
-
设置加密方式
-
设置加密方式后 我们需要一个密码加密后的密文来设置密码,所以需要打印一个密文
-
增加用户密码配置
-
-
读取数据库等其他数据源配置
-
本文是使用mysql数据库作为数据源,账号及密码存到数据库中
-
配置数据库依赖
-
增加数据库,连接池,mysql驱动,mybatis-plus 依赖
-
添加完依赖报错了 不知道原因 百度一下加个依赖好了
-
增加相关配置项
-
配置文件增加内容
-
增加配置类
- 增加MybatisPlusConfig类
- 增加MybatisPlusConfig类
- 增加自动完成配置类
- 自行测试数据库连接是否正常 是否能 正常查到数据
-
-
实现UserDetailsService接口
-
定义UserDetailsService接口
-
定义UserDetailsService接口实现类
-
定义AdminDetails 实现UserDetails 接口
-
完善登录服务逻辑
-
登录服务中分成两个部分:
- 使用注入的普通数据库对象查询账号信息
- 把查询到的信息放进自定义的UserDetails实现类里面 (此处前后琢磨4个小时,终于琢磨明白)
-
-
-
-
-
设置 Security登录的字段名
-
-
配置完Security登录账号及密码后 框架就不会在生成随机密码
-
解决完Security账号问题,剩下的就是授权和鉴权
-
授权全局权限
-
配置权限白名单,静态资源不检查权限
-
设置验证权限,所有请求都验证权限,登录页和csrf不校验权限(多个配置用 and 隔开)
-
设置登录成功及失败回调
-
返回key:value json字符串
-
引入json依赖
-
添加json配置
-
将HashMap转成json返回
-
配置成功 所有接口返回json数据
-
-
-
授权请求权限
-
使用antMatchers函数设置请求权限
-
在``SecurityConfig`文件中配置角色继承关系
-
-
总结
本教程最后实现从数据库查询数据后 由Security 判断密码是否正确 登录成功后生成token 仓库地址