jas*_*328 5 session ruby-on-rails csrf devise ruby-on-rails-4
我有一个Rails 4.2应用程序.几个月前,我们开始遇到无效的真实性令牌错误.我发现以下场景重现了错误:
1)用户打开浏览器并访问ourwebsite.com/log-in.
2)用户在同一浏览器中打开第二个选项卡并访问ourwebsite.com/enroll-in-course.
3)用户返回选项卡1并登录提交POST表单.
4)用户转到选项卡2并在注册课程页面上提交POST表单.
5)出现错误.
以下是有关我们应用的一般信息:
我们正在使用Devise 3.4.1并且应用了零定制.
我们的应用程序控制器运行protect_from_forgery with: :exception.
我们使用Turbolinks 2.5.
我们不会缓存任何一种形式.
我们Turbolinks.pagesCached(0);在所有页面上运行Javascript.
重申一下,上述场景中的两种形式都是POST表单.除上述情况外,它们的工作完全正常.
据我所知,我们在处理用户会话或CSRF令牌时没有做任何更改.
我有一个理论认为,因为我们登录用户,会话中存储的csrf_token会发生变化.因此,当用户在第二个选项卡中提交表单时,表单中的令牌将与会话中的令牌不匹配,并引发InvalidAuthenticityToken.怎么了,怎么解决这个问题?更好的是,这是否可以解决?
| 归档时间: |
|
| 查看次数: |
402 次 |
| 最近记录: |