Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Liferay 7-在验证器类中设置共享会话属性_Java_Tomcat_Liferay - Fatal编程技术网

Java Liferay 7-在验证器类中设置共享会话属性

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

我需要在Liferay中的Authenticator类
(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);
有关更多详细信息,请参阅以下帖子: