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

标签 java javafx-2 desktop-application session-storage

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

在登录过程之后,我需要访问权限以在不同的 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/

相关文章:

java - 实现切换全屏菜单项

python - Pyglet 仅适用于已安装的字体?

go - 是否可以将 Go 与其他语言混合来创建桌面应用程序?

java - Selenium 独立启动 Firefox,它保持空白

用于测试 Web 服务的 Java 库

java - 以编程方式获取堆栈转储中为 Java 监视器显示的地址?

service - 如何从服务更新一组 JavaFX2.2 TextFields?

macos - Mac OS X 上 jfxrt.jar 的位置

javascript - Java 与 JavaScript 拆分行为

c# - Windows 应用程序认证工具包失败 : Multi user session test