有没有办法在liferay portlet的渲染阶段从javax.portlet.PortletSession访问javax.security.auth.Subject?
我定义了自定义登录模块,它扩展了com.liferay.portal.security.jaas.ext.jboss.PortalLoginModule。在其中,我可以访问Subject对象并可以在此处设置主体。现在我想在我的portlet中使用jboss中部署的相同应用程序访问这些主体。
我可以访问PortletSessionImpl支持的portletSession,我也可以访问HttpSession。此HttpSession包含主题和包含主体的进一步主题,但我没有找到任何api或方式来访问它。
任何提示线索都非常感激。感谢
答案 0 :(得分:0)
找到了一种检索主题的方法。
import javax.security.auth.Subject;
import javax.security.jacc.PolicyContext;
import java.security.Principal;
Subject currentSubject = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
for (Principal principal : currentSubject.getPrincipals()) {
// You have access to individual Principal
}
为我工作:)