今日学习spring boot的安全框架spring security ,做了个demo ,实现登录验证和访问授权功能,好记性不如烂博客,在此做个笔记!
先说遇到的坑吧:
1. PasswordEncoder 密码加密方式问题:There is no PasswordEncoder mapped for the id "null"
2. auth.userDetailsService(customUserService()) 方式下的 new SimpleGrantedAuthority(roles.getRname()) roles前缀问题,roles的数据库里必须存成像:ROLE_admin,ROLE_user
必须要 ROLE_ 前缀, 因为 hasRole("user")时会自动加上ROLE_前缀变成 ROLE_user ,如果不加前缀一般就会出现403错误。
3. SysUser 和 Roles 实体类中的属性 name字段不能相同,一般可以是这样 SysUser - >>> sname , Roles ->>> rname 这样mybatis字段组装对象时不会出莫名的错误。
4. 自定义 SecurityConfig 实现 WebSecurityConfigurerAdapter 时在类名前加注解,@EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true)
prePostEnabled = true 属性设置后控制器层的方法前的@PreAuthorize("hasRole('admin')") 注解才能起效。
代码:链接: https://pan.baidu.com/s/1mY1p50Fx7afDCTmEM9QOHA 密码: xyk4