赞
踩
void configure(AuthenticationManagerBuilder auth)
自定义用户认证详细说明:
数据库映射实体类需要实现UserDetails接口,重写getAuthorities()方法返回用户权限集合,各种is方法返回Boolean。创建CRUD的Repository(定义findByUsername())。
服务层需要实现UserDetailsService接口
public interface UserDetailsService {
//对应创建CRUD的Repository的定义findByUsername()
UserDetails loadUserByUsername(String var1) throws UsernameNotFoundException;
}
PasswordEncode 接口实现:
public interface PasswordEncode {
String encode(CharSequence rawPassword);
boolean matches(CharSequence rawPassword,String encodedPassword);
}
passwordEncode接口的实现,不是解码数据库密码,而是对输入进行加密,然后比对(matches()方法)加密后的内容。
void configure(HttpSecurity http) throws Exception
几种功能:
注意: 在实际代码规则声明中,前面的规则优先级高于后面的优先级(前面的规则先被匹配)
利用SpEL表达式和access()能实现自定义权限。
csrf关闭方法: .and().csrf().disable()
确定用户:
ReactiveSecurityContextHolder 依赖于 Reactor Context API
ReactiveSecurityContextHolder.getContext().block() 会获取一个空的上下文,因为上下文解析的策略是惰性的。
需要使用spring5为security提供的新新模块ReactorContextWebFilter,ReactorContextWebFilter#subcriberContext通过ServerSecurityContextRepository来执行解析
public interface ServerSecurityContextRepository {
Mono<Void> save(ServerWebExchange var1, SecurityContext var2);
Mono<SecurityContext> load(ServerWebExchange var1);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。