【UserDetailsService】

UserDetailsService

认识userdetailsservice

如图所示,Authentication Filter将身份验证请求委托给AuthenticationManager,后者使用AuthenticationProvider处理身份验证。

Authentication Provider使用UserDetailsService来实现用户管理职责。它的主要职责是根据用户名从内存中或数据库中查找用户。

认识userdetails

UserDetails是Spring Security框架中的一个核心接口,用于表示用户的详细信息。

UserDetails接口主要用于封装从数据库中加载的用户详细信息。这些属性包括用户名、密码、权限、账户状态等,确保用户信息的安全性和完整性‌。

java 复制代码
@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;
    }


    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    public String getPassword() {
      return user.getPassword();
    }

    @Override
    public String getUsername() {
        return user.getUseName();
    }


    /**
     * 账户是否未过期,过期无法验证
     */
    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    /**
     * 指定用户是否解锁,锁定的用户无法进行身份验证
     *
     * @return
     */
    @Override
    public boolean isAccountNonLocked() {
        return true;
    }


    /**
     * 指示是否已过期的用户的凭据(密码),过期的凭据防止认证
     *
     * @return
     */
    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    /**
     * 是否可用 ,禁用的用户不能身份验证
     *
     * @return
     */
    @Override
    public boolean isEnabled() {
        return true;
    }
}
相关推荐
SteveCode.1 小时前
SpringBoot 2.x 升 3.x 避坑指南:企业级项目的实战问题与解决方案
java·spring boot
喵手2 小时前
如何实现一个简单的基于Spring Boot的用户权限管理系统?
java·spring boot·后端
王者鳜錸3 小时前
VUE+SPRINGBOOT从0-1打造前后端-前后台系统-登录实现
前端·vue.js·spring boot
.又是新的一天.4 小时前
SpringBoot+SpringMVC常用注解
java·spring boot·后端
JosieBook5 小时前
【web应用】前后端分离项目基本框架组成:Vue + Spring Boot 最佳实践指南
前端·vue.js·spring boot
Code blocks5 小时前
SpringBoot中策略模式使用
java·spring boot·后端·mybatis·策略模式
麦兜*6 小时前
Spring Boot 与 Ollama 集成部署私有LLM服务 的完整避坑指南,涵盖 环境配置、模型管理、性能优化 和 安全加固
java·spring boot·后端·安全·spring cloud·性能优化
烟沙九洲6 小时前
服务之间远程Feign调用,出现参数丢失
java·spring boot
麦兜*7 小时前
国产大模型平替方案:Spring Boot通义千问API集成指南
java·spring boot·后端·python·spring cloud·系统架构·springboot
顽疲7 小时前
从零用java实现小红书springboot_vue_uniapp(15)评论和im添加图片
java·vue.js·spring boot·uni-app