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

问题描述 投票:5回答:3

我有一个登录界面的应用程序,用户通过验证一些“数据”是从一个数据库(用户名和权限)检索,直到这里的一切都很好了。

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

我所寻找的是一个行为,例如PHP会话变量(是的,我来自网络的发展),这期间的一段时间内(通常当用户登录)的信息保持活着,入店。

我发现有关此主题的信息不够明确,过时的,我的意思是,没有申请的JavaFX 2的解决方案或解决方案与旧的设计模式。

我已经创建了一个形象,因为在其他论坛上,我发现了同样的问题,但是这是误解,所以我希望这可以帮助。

谢谢大家。

enter image description here

java javafx-2 desktop-application session-storage
3个回答
1
投票

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

    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()


0
投票

你可以把用户数据到本地缓存,如番石榴缓存。


0
投票

您可以使用Java Preferences。在第一次成功验证,你需要写用户在这样的Preferences信息:

Preferences userPreferences = Preferences.userRoot();
userPreferences.put(key,value);

然后采取从Preferences数据:

Preferences userPreferences = Preferences.userRoot();
String info = userPreferences.get(key,value);
© www.soinside.com 2019 - 2024. All rights reserved.