自定义用户验证逻辑
处理用户信息获取逻辑
SpringSecurity获取用户信息逻辑是封装在 UserDetailService 接口中的.
基于用户名定位用户.
在实际执行中 , 搜索可能是大小写敏感的 , 或者不分大小写取决于 Spring Security的配置.
在这种情况下 , UserDetails
返回的对象可能有一个不同于什么情况的用户名实际上是被要求的。
@param UsernameNotFoundException 根据用户名到存储查询 , 如果不存在该用户名则会抛出该异常.
处理用户校验逻辑
通常 , 用户的密码校验是由springSecurity来完成的.
UserDetail
public interface UserDetails extends Serializable {
// 用户权限组
Collection<? extends GrantedAuthority> getAuthorities();
// 帐号密码
String getPassword();
// 帐号名
String getUsername();
// 帐号是否过期
boolean isAccountNonExpired();
// 帐号是否被锁定
boolean isAccountNonLocked();
// 帐号密码是否过期
boolean isCredentialsNonExpired();
// 帐号是否可用.
boolean isEnabled();
}
处理密码的加密和解密
PassWordEncoder
在springboot 2.0 之后需要使用 org.springframework.security.crypto包中的 PassWordEncodeer
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
在注册/登录的时候需要使用passWordEncoder()去转换非明文密码.