SpringSecurity中的UserDetails和UserDetailsService接口详解
UserDetails
UserDetails 在 Spring Security 框架中主要担任获取用户信息的接口,通过该接口就能拿到用户的信息和验证用户的信息,这些信息在下面的方法中会有讲述。
UserDetails 接口中各个方法详解
方法名 | 作用 |
Collection<? extends GrantedAuthority> getAuthorities() | 授予用户的权限 |
String getPassword() | 用户的密码(当前密码是经过加密后的) |
String getUsername() | 用户名 |
boolean isAccountNonExpired() | 用户的账号是否过期 true 未过期 false 已过期 |
boolean isAccountNonLocked() | 用户的账号是否被锁定 true 未被锁定 false 被锁定 |
boolean isCredentialsNonExpired() | 用户的凭据(密码)是否已过期 true 未过期 false 已过期 |
boolean isAccountNonExpired() | 用户是否启用 true 启用 false 禁用 |
UserDetailsService
UserDetailsService 在 Spring Security 中主要承担查询系统内用户、验证密码、封装用户信息和角色权限。
大白话就是你写一个实现类实现 UserDetailsService 接口,在这个实现类中去查询数据库中的用户,并封装成一个实现了 UserDetails 接口的实体类模型。
UserDetailsService 具体操作
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.security.mysql.dao.UserDao; import com.security.mysql.entity.UserEntity; import com.security.user.UserDetailsInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Component; @Component @Slf4j public class UserDetailsServiceImpl implements UserDetailsService { // TODO 这里改成你自己的服务或者Dao查询 @Autowired private UserDao userDao; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { log.info("进入 loadUserByUsername ..."); // TODO 查询系统内的用户 LambdaQueryWrapper<UserEntity> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(UserEntity::getUsername, username); UserEntity userEntity = userDao.selectOne(wrapper); if (userEntity == null) { // 未查询到用户 throw new RuntimeException("not find user"); } // TODO 封装成实现了 UserDetails 接口的实体类模型 return UserDetailsInfo.builder() .id(userEntity.getId()) .username(userEntity.getUsername()) .password(userEntity.getPassword()) .build(); } }
UserDetailsService 方法介绍
方法名 | 作用 |
UserDetails loadUserByUsername(String username) | 根据用户名加载用户信息 |
到此这篇关于SpringSecurity中的UserDetails和UserDetailsService接口详解的文章就介绍到这了,更多相关UserDetails和UserDetailsService接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Maven的porfile与SpringBoot的profile结合使用案例详解
这篇文章主要介绍了Maven的porfile与SpringBoot的profile结合使用,通过maven的profile功能,在打包的时候,通过-P指定maven激活某个pofile,这个profile里面配置了一个参数activatedProperties,不同的profile里面的这个参数的值不同,需要的朋友可以参考下吧2021-12-12java 用redisTemplate 的 Operations存取list集合操作
这篇文章主要介绍了java 用redisTemplate 的 Operations存取list集合操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
最新评论