我在Jboss AS 7環境中。我的應用程序的/ admIn/*路徑受到需要基於表單的身份驗證的安全約束的保護。安全域是數據庫支持的。JBoss AS 7安全性:如何獲取當前登錄的用戶名?
沒關係,但現在我想在每個頁面的標題中顯示「早上好」。 我正在尋找某種getLoggedUsername()或getPrincipal()函數,但找不到它。
請發佈對官方文檔的參考,如果有的話。 謝謝。
我在Jboss AS 7環境中。我的應用程序的/ admIn/*路徑受到需要基於表單的身份驗證的安全約束的保護。安全域是數據庫支持的。JBoss AS 7安全性:如何獲取當前登錄的用戶名?
沒關係,但現在我想在每個頁面的標題中顯示「早上好」。 我正在尋找某種getLoggedUsername()或getPrincipal()函數,但找不到它。
請發佈對官方文檔的參考,如果有的話。 謝謝。
您應該可以使用JAAS。這是JBoss 7應該使用的。
調用委託人將被存儲在SessionContext
中,您可以通過告訴JBoss它是一個資源來獲取它。
@Resource
private SessionContext context;
public void myAwesomeMethod() {
String currentUser = context.getCallerPrincipal().getName();
}
如果由於某種原因,Injection無法在無狀態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);
}
}
}
好的。你會在哪裏放這個代碼?有狀態的ejb? –
@FabioB。它不一定是有狀態的。我會用另一種獲得答案的方式更新我的答案。你應該能夠使用無狀態bean的注入,但如果這不起作用,你可以直接查找上下文。 –
看起來是重複的,只是發現它http://stackoverflow.com/questions/1938517/how-to-get-sessioncontext-in-jboss但我看到任何人發現這個問題都不會發現其他一個人不知道先看JAAS。 –