ログイン画面のあるアプリケーションがあります。ユーザーが認証された後、データベースから「データ」(ユーザー名と権限)が取得され、ここですべてが正常になります。
ログインプロセスの後、さまざまなJavaFXシーンでいくつかのメニューを生成するための特権にアクセスする必要があります。これは、アプリケーション全体でいつでも可能ですが、その方法がわかりません。
私が探しているのは、PHP(はい、私はWeb開発から来ています)のSESSION変数のような動作です。これは、情報を一定期間(通常はユーザーがログイン)。
このトピックに関して私が見つけた情報は不明確で時代遅れです。つまり、JavaFX 2に適用されないソリューション、または古いデザインパターンのソリューションです。
他のフォーラムでも同じ質問を見つけたのですが、それは誤解されているので、画像を作成しました。これがお役に立てば幸いです。
みんなありがとう。
シングルトンデザインパターンを使用できます。例えば:
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);
ユーザーデータをGuavaCacheなどのローカルキャッシュに配置できます。