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

时间:2012-05-13 10:44:44

标签: security java-ee jboss jboss7.x

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

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

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

1 个答案:

答案 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