gpt4 book ai didi

java - session 超时后身份验证 token 无效

转载 作者:行者123 更新时间:2023-12-01 22:16:41 27 4
gpt4 key购买 nike

我启用了 CSRF 保护,它在以下场景中导致了问题。

session 超时,用户单击按钮触发要求用户登录的操作。由于 session 现已过期,用户首先会进入登录页面,然后重定向到操作。用户请求的操作 URL 保留在带有过期 p_auth 参数的登录 URL 中,这会导致错误

我不想将此操作从 CSRF 保护中排除。有没有办法定义在存在过期身份验证 token 时调用的默认操作?如果没有的话有办法解决这个问题吗?

最佳答案

好吧,这里的问题是Liferay 存储了lastPath。由于 LastPath 还包含身份验证 token ,因此这里有点棘手。 Liferay 检测到 session 已过期,并重定向到登录页面。新登录后,会生成一个新的 authToken 并与该 session 关联。现在 Liferay 尝试将您重定向到最后存储的路径。这里旧的 AuthToke 仍然存在。分析就这么多。

可能有效的是:

创建您自己的自定义 PostLoginAction。在该操作中,您检查 lastPath 是否包含 AuthToke。如果是,请将 token 值替换为新值。将其保存回 LastPath 并祈祷吧。实际上,我并不是 100% 确定这会起作用,但我认为它应该可行。

[编辑]

这是获取新 AuthToken 的方式:

AuthTokenUtil.getToken(request)

Request 将是一个 HTTPServletRequest 对象,它通常是 Action 方法中的一个参数。

关于java - session 超时后身份验证 token 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30842751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com