我在Jboss AS 7环境中。我的应用程序的/ admIn / *路径受安全约束的保护,该约束需要基于表单的身份验证。安全域是数据库支持的。
没关系,但现在我想在每个页面的标题中显示“早上好”。 我正在寻找某种getLoggedUsername()或getPrincipal()函数,但我找不到它。
如果有的话,请发布官方文档的参考。 谢谢。
答案 0 :(得分: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);
}
}
}
此代码段来自4 ways to obtain EJBContext。