2012-05-13 15 views
6

私はJboss AS 7環境です。私のアプリケーションの/ admIn/*パスは、フォームベースの認証を必要とするセキュリティ制約によって保護されています。セキュリティドメインはデータベースにバックアップされています。JBoss AS 7セキュリティ:現在ログインしているユーザー名を取得する方法?

これでいいですが、今は各ページのヘッダーに「おはよう」を表示したいと思います。 getLoggedUsername()またはgetPrincipal()関数のようなものを探していますが、見つけられません。

もしあれば、公式ドキュメントへの参照を投稿してください。 ありがとうございます。

+0

重複しているように見えますが、見つかったばかりです。http://stackoverflow.com/questions/1938517/how-to-get-sessioncontext-in-jbossしかし、この質問を見つけた人は誰も見つけられませんJAASを最初に見たことがない人。 –

答えて

9

JAASを使用できるはずです。これはJBoss 7が使用すべきものです。

呼び出し側のプリンシパルは、JBossにリソースであることを伝えて取得できるSessionContextに格納されます。

@Resource 
private SessionContext context; 

public void myAwesomeMethod() { 
    String currentUser = context.getCallerPrincipal().getName(); 
} 

インジェクションはステートレスBeanでは動作しません何らかの理由場合は、EJBContextをダイレクトに調べることができます。

@Stateless 
public class HelloBean implements com.foo.ejb.HelloRemote { 
    public void hello() { 
     try { 
      InitialContext ic = new InitialContext(); 
      SessionContext sctxLookup = 
       (SessionContext) ic.lookup("java:comp/EJBContext"); 
      System.out.println("look up EJBContext by standard name: " + sctxLookup); 
     } catch (NamingException ex) { 
      throw new IllegalStateException(ex); 
     } 
    } 
} 

このスニペットは、4 ways to obtain EJBContextから入手しました。

+0

あなたはそのコードをどこに置くのですか?ステートフルなejb? @FabioB。 –

+0

ステートフルである必要はありません。私はそれを得る別の方法で私の答えを更新します。ステートレスBeanでInjectionを使用できるはずですが、動作しなければ直接コンテキストをルックアップできます。 –

関連する問題