【Spring Security】2. 自定义UserDetailsService

快速入门中通过在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值