我们的应用程序使用JSF 2.2并使用glassfish 4作为服务器。我需要在身份验证用户期间在登录模块中添加一些对象,因此在Web应用程序中,托管bean可以检索该对象。
在loginModule中,我做了以下操作(如果不是这样,请告诉我正确的方法):
_subject.getPublicCredentials().add(someObject);
但是如何在ManagedBean中检索它。任何帮助将不胜感激。
答案 0 :(得分:0)
这是JSR-115规范JavaTM容器授权合同的一部分。请参见4.6.1.1容器主题策略上下文处理程序:
4.6.1.1容器主题策略上下文处理程序
所有EJB和Servlet容器都必须注册一个PolicyContextHandler getContext方法在调用时返回javax.security.auth.Subject对象 关键字“javax.security.auth.Subject.container”。
在您的应用程序中,您可以通过以下命令检索对象:
import javax.security.jacc.PolicyContext;
Subject subject = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
注意:应在get[Private|Public]Credentials()
中添加该类(不带参数)。 get[Public|Private]Credentials(Class<T>.class)
生成内容的副本,&#34;过滤&#34;作为参数实例的类,仅用于检索已保存的类。
注意:未在JBoss上测试,但我认为它适用于基于JBoss Doc的相同方式。
<强>参考强>: