我有一个登录界面的应用程序,用户通过验证一些“数据”是从一个数据库(用户名和权限)检索,直到这里的一切都很好了。
登录过程后,我需要访问权限,以产生在不同的场景JavaFX的一些菜单,这一切都在各地任何时候整个应用程序,但我不知道该怎么做。
我所寻找的是一个行为,例如PHP会话变量(是的,我来自网络的发展),这期间的一段时间内(通常当用户登录)的信息保持活着,入店。
我发现有关此主题的信息不够明确,过时的,我的意思是,没有申请的JavaFX 2的解决方案或解决方案与旧的设计模式。
我已经创建了一个形象,因为在其他论坛上,我发现了同样的问题,但是这是误解,所以我希望这可以帮助。
谢谢大家。
您可以使用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()
你可以把用户数据到本地缓存,如番石榴缓存。
您可以使用Java Preferences
。在第一次成功验证,你需要写用户在这样的Preferences
信息:
Preferences userPreferences = Preferences.userRoot();
userPreferences.put(key,value);
然后采取从Preferences
数据:
Preferences userPreferences = Preferences.userRoot();
String info = userPreferences.get(key,value);