用户使用门户LoginPortlet执行登录后,登录不成功,并在日志中打印警告:
User 0 is not allowed to access URL http://localhost:8080/web/guest/login and portlet com_liferay_login_web_portlet_LoginPortlet: User 0 did not provide a valid CSRF token for com.liferay.portlet.SecurityPortletContainerWrapper
之后第二次登录后,登录正常。只有在登录页面打开几分钟并且auth令牌无效时,才会出现问题。这基本上是可以的,但是门户配置portlet.add.default.resource.check.whitelist
对LoginPortlet有一个排除。但这个白名单似乎并没有避免不必要的检查。有没有其他地方可以避免CSRF检查LoginPortlet?
我无法重现此问题,我使用此服务器进行测试:
Liferay Community Edition Portal 7.3.5 CE GA6
以下是我的步骤,请让我知道我应该更改什么来体验此问题:
- 我将这个zip文件提取到我的ubuntu linux电脑中:
liferay-ce-portal-tomcat-7.3.5-ga6-20200930172312275.tar.gz - 启动服务器并完成第一次设置
- 我重新启动了服务器,并在Opera浏览器中访问了localhost:8080
- 等待了7分钟
- 我点击了";登录";在右上角
- 再次等待5分钟
- 我输入了我的凭据
结果:
我可以成功登录,CSRF没有错误
有几个建议:
>
A。在以下位置搜索CSRF:
https://github.com/liferay/liferay-portal/blob/master/portal-impl/src/portal.properties
看看你是否能找到一个解决问题的属性
这样的属性可以是:
auth.token.impl=com.liferay.portal.security.auth.SessionAuthToken
auth.token.check.enable=false
uth.token.ignore.origgins
B.也许你可以尝试在你的portal-ext.properties中设置这样的属性:
portlet.add.default.resource.check.whitelist.actions=/login/login
C在Liferay Jira中搜索,例如,这张票谈到了类似的内容:
https://issues.liferay.com/browse/LPS-129976