如何包括是不是为 Spring Boot 用户身份验证启用用户帐户

Posted

技术标签:

【中文标题】如何包括是不是为 Spring Boot 用户身份验证启用用户帐户【英文标题】:How to include include whether users account enabled for Springboot User authentication如何包括是否为 Spring Boot 用户身份验证启用用户帐户 【发布时间】:2021-08-13 04:27:18 【问题描述】:

我有这个为用户进行身份验证的功能。但是,我有一个 userActive 作为我想要包含在身份验证中的字段。所以看看用户的账号是否启用。

userActiveBoolean

我怎么能做到这一点?

override fun loadUserByUsername(username: String?): UserDetails 
        var user: User = userRepository.findByEmail(username!!)
        if (user == null) 
            throw UsernameNotFoundException("Invalid username or password.")
        
        return org.springframework.security.core.userdetails.User(
            user.getEmail(), user.getPassword(), mapRolesToAuthorities(
                user.getRoles()!!
            )
        )
        
    

【问题讨论】:

【参考方案1】:

org.springframework.security.core.userdetails.User 的另一个构造函数可用:

new User(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities)

第三个参数enabled 似乎对应于您的userActive 字段。

请记住,禁用的用户在身份验证后返回false 以进行isEnabled() 检查。这将导致错误委派给您配置的AuthenticationEntryPoint,这将显示为身份验证失败。

【讨论】:

当然可以。介意接受答案吗? :D

以上是关于如何包括是不是为 Spring Boot 用户身份验证启用用户帐户的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spring security 和 spring boot 对 Google 用户进行身份验证,将 mongoDB 作为存储库?

如何在 Debian 上以非 root 用户身份运行 Spring Boot 应用程序?

Spring Boot 整合 Shiro

如何在 Spring Boot + Spring Security 中添加一些身份验证步骤?

Spring Boot Security - 如果用户未通过 Oauth2 进行身份验证,如何禁用对 swagger ui 页面的端点的访问

使用 Spring Boot OAuth2 针对 Google 进行身份验证时如何将 google 用户电子邮件发送到白名单用户