Spring Security 核心组件?

SecurityContext
SecurityContext是安全的上下文,所有的数据都是保存到SecurityContext中。
可以通过SecurityContext获取的对象有:

Authentication
SecurityContextHolder
SecurityContextHolder用来获取SecurityContext中保存的数据的工具。通过使用静态方法获取SecurityContext的相对应的数据。

SecurityContext context = SecurityContextHolder.getContext();
Authentication
Authentication表示当前的认证情况,可以获取的对象有:
UserDetails:获取用户信息,是否锁定等额外信息。
Credentials:获取密码。
isAuthenticated:获取是否已经认证过。
Principal:获取用户,如果没有认证,那么就是用户名,如果认证了,返回UserDetails。
UserDetails:
public interface UserDetails extends Serializable {

Collection<? extends GrantedAuthority> getAuthorities();
String getPassword();
String getUsername();
boolean isAccountNonExpired();
boolean isAccountNonLocked();
boolean isCredentialsNonExpired();
boolean isEnabled();

}
UserDetailsService
UserDetailsService可以通过loadUserByUsername获取UserDetails对象。该接口供spring security进行用户验证。
通常使用自定义一个CustomUserDetailsService来实现UserDetailsService接口,通过自定义查询UserDetails。

AuthenticationManager
AuthenticationManager用来进行验证,如果验证失败会抛出相对应的异常。
PasswordEncoder
密码加密器。通常是自定义指定。

BCryptPasswordEncoder:哈希算法加密

NoOpPasswordEncoder:不使用加密

上一篇:Android 自定义垂直,旋转,圆形进度提示 自定义Seekbar


下一篇:.net core 集成jwtBearer认证后,服务器接收时修改request header中Authorization这个key的名称