当前位置: 首页 > 知识库问答 >
问题:

“UserDetails”类中“isEnabled”的具体用途是什么?

袁帅
2023-03-14

这听起来可能是一个愚蠢的问题,但我不明白“用户详细信息”类中的“isEnable”是用来做什么的。留档说“指示用户是启用还是禁用。禁用的用户无法进行身份验证。”所以,我唯一真正需要这个布尔值的是,禁用某些用户的身份验证?因为我有一个数据库,在教程中,那个人做了一个额外的列来保存该布尔值。但是为什么我需要将该值保存在数据库中呢?为什么我要决定禁用其中一个用户的身份验证?那么删除用户的帐户不是更明智吗?如果有人能向我解释这个布尔的实际用途,那就太好了。这是“我的用户详细信息”类,在这里我重写了“用户详细信息”的方法:

package de.gabriel.vertretungsplan.models;

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

public class MyUserDetails implements UserDetails {

    private String userName;
    private String password;
    private boolean active;

    private List<GrantedAuthority> authorities;

    public MyUserDetails(User user) {
        this.userName = user.getUserName();
        this.password = user.getPassword();
        this.active = user.isActive();
        this.authorities = Arrays.stream(user.getRoles().split(","))
                .map(SimpleGrantedAuthority::new)
                .collect(Collectors.toList());
        System.out.println(userName);
        System.out.println(password);
        System.out.println(active);
        System.out.println(authorities);
    }

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

    @Override
    public String getPassword() {
        return password;
    }

    @Override
    public String getUsername() {
        return userName;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return active;
    }
}

共有1个答案

司空宗清
2023-03-14

如果您的数据库模型使用对其他表中用户的引用,那么它可能会很有用。无法删除这些用户,否则数据库内容将不一致。有了适当的外键约束,如果不删除这些引用(或者将它们设置为NULL,或者删除包含它们的记录),就不可能实现。

如果不需要禁用用户帐户,则始终可以从该方法返回true

 类似资料:
  • 我刚开始使用Maven,有人告诉我在一个特定的目录中安装。 到底做什么? 我认为它会寻找,并按照该文件中指定的说明开始。对吗?

  • 本文向大家介绍Java 9中jdeprscan工具的用途是什么?,包括了Java 9中jdeprscan工具的用途是什么?的使用技巧和注意事项,需要的朋友参考一下 以下是jdeprscan工具的语法 。 在下面,我们为jdeprscan 工具提供了不同的选项 :

  • 问题内容: 我有一个喜欢使用元类的朋友,并定期提供它们作为解决方案。 我认为您几乎不需要使用元类。为什么?因为我认为如果您正在对类进行此类操作,则可能应该对对象进行操作。并进行了少量的重新设计/重构。 能够使用元类已经使很多地方的许多人将类用作某种第二流的对象,这对我来说似乎是灾难性的。用元编程代替编程吗?不幸的是,添加了类装饰器后,它甚至被接受了。 所以,我很想知道您在Python中对元类的有效

  • 问题内容: 我对Bash脚本非常陌生,有人可以向我解释$#和$的情况吗?在以下代码中工作? 问题答案: 在Y分钟内来自Learn Bash :

  • 问题内容: LLVM在Android NDK工具链中的用途是什么? 简要回顾一下: 我在Ubuntu上使用Gradlew构建本地项目,目标是arm和x86_64体系结构。似乎利用 LLVM 来调用 arm-linux- androideabi-4.9 和 x86_64 (?)的C / C ++编译器 以下内容摘自 armeabi-v7a / ndkBuild_build_output.log: /

  • 问题内容: 我正在阅读我的Deitel《 Java How to Program》一书,并遇到了“ 阴影 ”一词。如果允许阴影,那么Java类中有什么情况或目的? 例: 问题答案: 阴影的基本目的是使本地代码与周围的类分离。如果不可用,请考虑以下情况。 API中的Class Foo已发布。在代码中将其子类化,并在子类中使用名为bar的变量。然后,Foo发布更新,并在其类中添加一个称为Bar的受保护