2014-12-03 44 views
0

我们的应用程序使用JSF 2.2并使用glassfish 4作为服务器。我需要在认证用户期间在登录模块中添加一些对象,因此在Web应用程序中,托管bean可以检索该对象。从JSF managedbean中检索JAAS登录模块中的对象添加

在LoginModule的我做了以下(如果不是这样,请告诉我,做正确的方式):

_subject.getPublicCredentials().add(someObject); 

但我怎么能在ManagedBean检索。任何帮助都感激不尽。

+0

使用会话范围的怎么样? – 2014-12-04 04:20:17

回答

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)生成内容的副本,“过滤”作为参数实例的类,仅用于检索已保存的类。

注意:未在JBoss上测试过,但我认为它基于JBoss Doc以同样的方式应用。


参考