Liferay 7-在Authenticator类中设置共享的会话属性



我需要在Liferay中的 authenticator (key=auth.pipeline.pre)中设置会话。在此Authenticator类中,我需要通过另一个Web服务检查凭据,并在会话中设置一些应与其他portlet共享的属性。

我知道这个主题:liferay 7共享会话属性

问题是我无法检索Authenticator类中的请求(PortletRequest)。

我尝试使用PortalSessionThreadLocal这样的解决方案:

String sharedKey = "LIFERAY_SHARED_" + key;
HttpSession session = PortalSessionThreadLocal.getHttpSession();
session.setAttribute(sharedKey, bean);

,但我无法以这种方式在另一个港口中检索此会话属性:

key = "LIFERAY_SHARED_" + key;
HttpSession session = PortalSessionThreadLocal.getHttpSession();
Object bean = session.getAttribute(key);

您能推荐我某种解决方案吗?

在我看来,您有两个问题要查找,一个是您链接的帖子中建议的范围。

第二个事实是,如果您启用了网络钓鱼保护,则会话属性通常无法在身份验证管道中幸存下来。

只有白色属性存活,这些属性应在您的Portal-ext.properties上配置。

我们有类似的用例。我们使用ExpandOS/自定义字段来持续存在用户身份验证期间使用外部Web服务呼叫检索的用户信息,或者在SSO的自定义自动登录过滤器中或自定义登录portlet中检索。

可以通过自定义模块中的API调用来检索Expandos。

示例API调用以保存Expando:

user.getExpandoBridge().setAttribute("example", "value", false);

有关更多详细信息,您可以查看这篇文章:Expandos

最新更新