在快速入门中通过在application.yml配置用户名和密码的方式初步了解如何应用Spring Security;但在实际应用中,通常需要从数据库中获取用户信息。
Spring Security中UserDetails相关类
UserDetails来表示用户的核心信息:权限集,密码,用户名,账户是否过期,账户是否锁定,凭证是否过期,用户是否可用。在实际开发中,需要扩展UserDetails来自定义存储更多的用户信息。UserDetailsService是Spring Security加载用户数据的核心接口,提供了根据用户名查找用户的方法。UserDetailsManager继承自UserDetailsService,并提供了管理用户的方法。
扩展UserDetailsService
在UserDetailsService接口中只声明了一个loadUserByUsername(String username)方法,用于根据用户名查找用户的方法,返回UserDetails。
public class CustomizeUserDetailsService implements UserDetailsService {
// 用于模拟从数据库查询
private final List<String> usernameList;
public CustomizeUserDetailsService(List<String> usernameList) {
this.usernameList = usernameList;
}
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
if(!exists(username)) {
throw new UsernameNotFoundException("用户不存在");
}
// 此处的TEST表示用户的权限, {xxx}指定密码加密的方式, {noop}表示不加密,采用明文
return User.withUs

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



