多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**1. UserDetailsService接口** 当什么也没有配置的时候,账号和密码是由 Spring Security 定义生成的,而在实际项目中账号和密码都是从数据库中查询出来的,所以我们需要自定义逻辑,只需要实现 UserDetailsService 接口即可。 ```java /* org.springframework.security.core.userdetails.UserDetailsService */ public interface UserDetailsService { //var1为用户名 UserDetails loadUserByUsername(String var1) throws UsernameNotFoundException; } ``` **2. UserDetails接口** ```java /* org.springframework.security.core.userdetails.UserDetails */ public interface UserDetails extends Serializable { //获取登录用户所有权限 Collection<? extends GrantedAuthority> getAuthorities(); //获取密码 String getPassword(); //获取用户名 String getUsername(); //判断账户是否过期 boolean isAccountNonExpired(); //判断账户是否被锁定 boolean isAccountNonLocked(); //凭证{密码}是否过期 boolean isCredentialsNonExpired(); //表示当前用户是否可用 boolean isEnabled(); } ``` **3. UserDetails接口实现类User** ```java /* org.springframework.security.core.userdetails.User */ public class User implements UserDetails, CredentialsContainer { //密码 private String password; //用户名 private final String username; //存储当前账号的权限与角色 private final Set<GrantedAuthority> authorities; //账号是否过期,true未过期,false已过期 private final boolean accountNonExpired; //账号是否被锁定,true未锁定,false已锁定 private final boolean accountNonLocked; //密码是否过期,true未过期,false已过期 private final boolean credentialsNonExpired; //账号是否可用,true可用,false不可用 private final boolean enabled; ... ```