微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Liferay 7.3 LoginPortlet 上不需要的 CSRF 验证

如何解决Liferay 7.3 LoginPortlet 上不需要的 CSRF 验证

用户使用门户 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

此后第二次登录后,登录正常。仅当登录页面打开几分钟并且身份验证令牌无效时才会出现问题。这基本上没问题,但是门户配置 portlet.add.default.resource.check.whitelist 排除了 LoginPortlet。但是这个白名单似乎并没有避免不必要的检查。还有其他地方如何避免对 LoginPortlet 进行 CSRF 检查吗?

解决方法

我无法重现此问题,我使用此服务器进行测试:
Liferay 社区版门户 7.3.5 CE GA6

这是我的步骤,请让我知道我应该更改什么才能遇到问题:

  1. 我将此 zip 文件解压缩到我的 ubuntu linux pc:
    liferay-ce-portal-tomcat-7.3.5-ga6-20200930172312275.tar.gz
  2. 启动服务器并完成第一次设置
  3. 我重新启动了服务器并在 Opera 浏览器中访问了 localhost:8080
  4. 等了 7 分钟
  5. 我点击了右上角的“登录”
  6. 又等了 5 分钟
  7. 我输入了我的凭据

    结果:
    我可以登录成功,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.enabled=false
    auth.token.ignore.origins

    B. 也许你可以尝试在你的 portal-ext.properties 中设置这样的东西:
    portlet.add.default.resource.check.whitelist.actions=/login/login

    C. 你可以在 Liferay Jira 中搜索,例如这张票讲了类似的事情:
    https://issues.liferay.com/browse/LPS-129976

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?