6

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

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

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

4

1 回答 1

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 种获取 EJBContext的方法中获得的。

于 2012-05-13T10:54:53.810 回答