Security中的接口
UserDetailsService
:查询数据库用户名和密码的过程
创建
自定义逻辑时, 实现UserDetailsService接口 写查数据库中的账号密码的过程
PasswordEncoder
: 密码加密的接口
用户返回User对象里面的密码加密
Web权限的三种设置用户名和密码的方式
- 通过配置文件(application.yml)
spring:
security:
user:
name: admin
password: admin
-
通过配置类
继承
WebSecurityConfiggurerAdapter
重写 configure
使用auth .inMemoryAuthenticcation().withUser().password().roles();
加密密码new BcryptPasswordEncoder
-
自定义编写实现类
创建配置类, 设置使用哪个UserDetailsService实现类
编写实现类, 返回User对象, User对象有用户名密码和操作权限- 在SecurityConfig 中注入 UserDetailsService. //创建配置类
- 实现UserDetailsService 接口
- 重写LoadUserByUsername();
- 返回UserDetails 接口.
注解的使用
//开启Security的注解功能
@EnableGlobalMethodSecurity(securityEnabled=true)
判断是否具有某个角色,另外需要注意 这里匹配的字符串需要添加前缀"ROLE_"
@Secured
在方法执行之前做权限验证
@PreAuthorize (“hasAnyAutho****”)
在方法执行之后做权限验证
@PostAuthorize (“hasAnyAutho****”)
数据过滤注解
PostFilter 方法返回数据进行过滤
PreFilter 入参数据进行过滤
CSRF (跨站请求伪造)
默认开启