Java Liferay 7-在验证器类中设置共享会话属性
我需要在Liferay中的Authenticator类Java Liferay 7-在验证器类中设置共享会话属性,java,tomcat,liferay,Java,Tomcat,Liferay,我需要在Liferay中的Authenticator类(key=auth.pipeline.pre)中设置会话。在这个Authenticator类中,我需要通过另一个web服务检查凭据,并在会话中设置一些属性,这些属性应该与其他每个portlet共享 我知道这个话题: 问题是我无法在Authenticator类中检索请求(portletRequest也是) 我使用PortalSessionThreadLocal尝试以下解决方案: String sharedKey = "LIFERAY_SHARE
(key=auth.pipeline.pre)
中设置会话。在这个Authenticator类中,我需要通过另一个web服务检查凭据,并在会话中设置一些属性,这些属性应该与其他每个portlet共享
我知道这个话题:
问题是我无法在Authenticator类中检索请求(portletRequest也是)
我使用PortalSessionThreadLocal
尝试以下解决方案:
String sharedKey = "LIFERAY_SHARED_" + key;
HttpSession session = PortalSessionThreadLocal.getHttpSession();
session.setAttribute(sharedKey, bean);
但我无法在另一个portlet中检索此会话属性,如下所示:
key = "LIFERAY_SHARED_" + key;
HttpSession session = PortalSessionThreadLocal.getHttpSession();
Object bean = session.getAttribute(key);
你能给我推荐一些解决办法吗 在我看来,你有两个问题需要解决,一个是你链接的帖子中建议的范围 第二个问题是,如果启用了网络钓鱼保护,会话属性通常不会在身份验证管道中存活
只有白名单上的属性存在,这些属性应该在您的portal-ext.properties上配置。我们有一个类似的用例。我们使用expandos/自定义字段来持久化用户信息,这些信息在用户身份验证期间通过外部web服务调用在SSO的自定义自动登录过滤器或自定义登录portlet中检索 expandos一旦存储,就可以通过自定义模块中的api调用进行检索 保存expando的API调用示例:
user.getExpandoBridge().setAttribute("example", "value", false);
有关更多详细信息,请参阅以下帖子: