6

私は Jboss AS 7 環境にいます。アプリケーションの /admIn/* パスは、フォーム ベースの認証を必要とするセキュリティ制約によって保護されています。セキュリティ ドメインはデータベースに支えられています。

大丈夫ですが、各ページのヘッダーに「おはよう」を表示したいと思います。ある種の getLoggedUsername() または getPrincipal() 関数を探していますが、見つかりません。

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

4

1 に答える 1

11

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

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

@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);
        }
    }
}

このスニペットは、EJBContext を取得する 4 つの方法から取得されました。

于 2012-05-13T10:54:53.810 に答える