Codeigniter CSRF问题:CSRF请求和响应令牌不匹配

问题描述 投票:0回答:1

我花了很多时间来寻找解决这个问题的方法,但是没有运气,所以我希望有人可以帮助我。

我启用了CSRF保护,并将csrf_regenerate设置为true(我想在每个请求上重新生成CSRF令牌)。

我正在使用我的登录表单进行测试。第一次提交包含无效数据的表单并刷新页面(F5)时,会出现问题。我收到thew错误:您请求的操作不允许,因此CSRF令牌验证失败。

[我注意到在提交带有无效数据的表单时,CSRF请求和响应令牌不匹配,这是导致问题的原因。

我想我不是第一个遇到这个问题的人,所以我真的希望有人能帮助我。

我需要任何其他数据,请让我知道。

谢谢,格雷戈尔

codeigniter csrf csrf-protection
1个回答
0
投票

对我有用的解决方案是,当为每个请求启用CSRF时,后续的ajax发布是在由于令牌过期而导致请求失败时,在AJAX成功中发出GET请求。然后有一个隐藏字段,该字段会继续用最新令牌更新,如果在发出请求时令牌已过期,则您进行GET REQUEST来获取最新令牌,然后在提交表单或提交POST请求的函数上触发click事件,这意味着该函数必须传递“ this”或ID作为参数的一部分。这使用户无法在后台实现更新令牌的过程

© www.soinside.com 2019 - 2024. All rights reserved.