gpt4 book ai didi

java - 如何在 JavaFX 桌面应用程序登录后保留用户信息

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:27 25 4
gpt4 key购买 nike

我有一个带有登录屏幕的应用程序,在用户通过身份验证后,将从数据库中检索一些“数据”(用户名和权限),直到这里一切都很好。

在登录过程之后,我需要访问权限以在不同的 JavaFX 场景中生成一些菜单,这在任何时候都贯穿于整个应用程序,但我不知道该怎么做。

我正在寻找的是一种行为,例如 PHP 中的 SESSION 变量(是的,我来自网络开发),它可以在特定时间段内(通常是在用户登录时)保持信息活跃和可访问。

我找到的有关此主题的信息不明确且已过时,我的意思是,不适用于 JavaFX 2 的解决方案或具有旧设计模式的解决方案。

我创建了一张图片,因为我在其他论坛上发现了同样的问题,但人们对此有误解,所以我希望这能有所帮助。

谢谢大家。

enter image description here

最佳答案

您可以使用单例设计模式。例如:

    public final class UserSession {

private static UserSession instance;

private String userName;
private Set<String> privileges;

private UserSession(String userName, Set<String> privileges) {
this.userName = userName;
this.privileges = privileges;
}

public static UserSession getInstace(String userName, Set<String> privileges) {
if(instance == null) {
instance = new UserSession(userName, privileges);
}
return instance;
}

public String getUserName() {
return userName;
}

public Set<String> getPrivileges() {
return privileges;
}

public void cleanUserSession() {
userName = "";// or null
privileges = new HashSet<>();// or null
}

@Override
public String toString() {
return "UserSession{" +
"userName='" + userName + '\'' +
", privileges=" + privileges +
'}';
}
}

并在需要时使用 UserSession。当您登录时,您只需调用:UserSession.getInstace(userName, privileges),当您注销时:UserSession.cleanUserSession()

关于java - 如何在 JavaFX 桌面应用程序登录后保留用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46508098/

25 4 0
文章推荐: c++ - 如何检测内存访问冲突和/或内存竞争条件?
文章推荐: java - 如何优化我当前的 getMax 方法以检索数组中的最大值?
文章推荐: c - 链表问题
文章推荐: java - 使用 mapstruct 从 List 映射 List