JBoss AS 7安全性:如何获取当前登录的用户名?

Fab*_* B. 6 security jboss java-ee jboss7.x

我在Jboss AS 7环境中.我的应用程序的/ admIn/*路径受安全约束的保护,该约束需要基于表单的身份验证.安全域是数据库支持的.

没关系,但现在我想在每个页面的标题中显示"早上好".我正在寻找某种getLoggedUsername()或getPrincipal()函数,但我找不到它.

如果有的话,请发布官方文档的参考.谢谢.

And*_*ell 11

您应该能够使用JAAS.这是JBoss 7应该使用的.

调用主体将存储在一个SessionContext你可以通过告诉JBoss它是一个资源获得的.

@Resource 
private SessionContext context;

public void myAwesomeMethod() {
    String currentUser = context.getCallerPrincipal().getName();
}
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因,注入无法在无状态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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个片段是从4种方式获得的,以获得EJBContext.