2010-12-29 7 views
11

カスタムRealmを使用して、GlassFish 3サーバー上のJSF 2.0アプリケーションでフォームベースのログインを設定しました。ログインしたユーザー、つまりユーザー名に関する情報を取得する最もシンプルな方法は何ですか。ログインしたユーザー、フォームベースのセキュリティを使用したJSF 2.0アプリケーションの表示方法

これは可能ですか?または、現在のセッションがセキュリティロールに関連付けられているだけですか?もしそうなら、ログイン設定を変更せずにこれを可能にする方法はありますか?ユーザ名として私のウェブページ上の

をログインし

:私が欲しいもの

簡単に言えばは、のような単純なメッセージを表示することです。

答えて

18

JSF 2.0にEL経由でログインしているユーザー(式言語)で取得する最も簡単な方法は、次のようになります。

#{request.remoteUser} 

Tobbeの答えは、バッキングBean内からリモートユーザに取得するためにうまく機能するだろう。

11

、単純な(そうでないかもしれない最高の)答えは:私はそれはそれを把握するために私にかかった時間についてショックを受けたよ

FacesContext.getCurrentInstance().getExternalContext().getRemoteUser() 

0

あなたのloginmanagedbeanクラスでは、currentUSerを定義し、これを取得します。私は外部ログインシステムを使用していませんでした。

public Login getCurrentUser() { 
    FacesContext fc = FacesContext.getCurrentInstance(); 
    ExternalContext externalContext = fc.getExternalContext(); 
    if (externalContext.getUserPrincipal() == null){ 
     logger.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!current principal is null"); 
    } 
    else{ 
     Integer id = Integer.parseInt(externalContext.getUserPrincipal().getName()); 
     logger.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!LOGGED USER "+ id); 
     try { 
      currentUser = getLoginService().getLoginById(id); 
     } 
     catch (Exception ex) { 
     } 
    } 
    return currentUser; 
} 
+0

この行は何ですか。 'Integer id = Integer.parseInt(externalContext.getUserPrincipal()。getName());'名前をintとして解析しようとしていますか? –

0

#{request.userPrincipal.name}を使用できます。

関連する問題