【UserDetailsService】
UserDetailsService
- 认识userdetailsservice
- 认识userdetails
认识userdetailsservice
如图所示,Authentication Filter将身份验证请求委托给AuthenticationManager,后者使用AuthenticationProvider处理身份验证。
Authentication Provider
使用UserDetailsService
来实现用户管理职责。它的主要职责是根据用户名从内存中或数据库中查找用户。
认识userdetails
UserDetails是Spring Security框架中的一个核心接口,用于表示用户的详细信息。
UserDetails接口主要用于封装从数据库中加载的用户详细信息。这些属性包括用户名、密码、权限、账户状态等,确保用户信息的安全性和完整性。
@Data
public class LoginUser implements UserDetails {/*** 用户ID*/private String useNo;/*** 用户信息*/private SysUser user;/*** 权限列表*/private Set<String> permissions;public LoginUser(String useNo, SysUser user, Set<String> permissions){this.useNo = useNo;this.user = user;this.permissions = permissions;}@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() {return null;}@Overridepublic String getPassword() {return user.getPassword();}@Overridepublic String getUsername() {return user.getUseName();}/*** 账户是否未过期,过期无法验证*/@Overridepublic boolean isAccountNonExpired() {return true;}/*** 指定用户是否解锁,锁定的用户无法进行身份验证** @return*/@Overridepublic boolean isAccountNonLocked() {return true;}/*** 指示是否已过期的用户的凭据(密码),过期的凭据防止认证** @return*/@Overridepublic boolean isCredentialsNonExpired() {return true;}/*** 是否可用 ,禁用的用户不能身份验证** @return*/@Overridepublic boolean isEnabled() {return true;}
}