我在 Jboss AS 7 环境中。我的应用程序的 /admIn/* 路径受安全约束保护,需要基于表单的身份验证。安全域由数据库支持。
没关系,但现在我想在每个页面的标题中显示“早上好”。我正在寻找某种 getLoggedUsername() 或 getPrincipal() 函数,但我找不到它。
如果有的话,请发布对官方文档的参考。谢谢你。
我在 Jboss AS 7 环境中。我的应用程序的 /admIn/* 路径受安全约束保护,需要基于表单的身份验证。安全域由数据库支持。
没关系,但现在我想在每个页面的标题中显示“早上好”。我正在寻找某种 getLoggedUsername() 或 getPrincipal() 函数,但我找不到它。
如果有的话,请发布对官方文档的参考。谢谢你。
您应该能够使用 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 种获取 EJBContext的方法中获得的。