我在使用rails真实性令牌和设计登录/注销时遇到问题。
我使用骨干js构建单页面应用程序,因此我使用ajax登录/注销用户。这是我观察到的,我不明白为什么会发生这种情况。
我的布局中有csrf_meta_tags。页面加载,我点击登录按钮填写表格并提交,我已成功登录。我可以做登录用户应该能做的事情。
现在我点击一个注销按钮,通过ajax发送DELETE请求,我已成功注销。
上面的所有过程都在一个页面上没有页面重新加载发生它的所有ajax。
现在当我再次点击登录并填写表单时,它会发送ajax请求,登录我但在服务器控制台上显示警告消息。
WARNING: Can't verify CSRF token authenticity
现在为什么它(设计)登录我,如果它(rails)无法验证CSRF令牌的真实性。
现在,当我尝试执行登录用户应该能够执行的操作失败时,发布表单失败并显示来自设计的错误消息
401 Unauthorized {"error":"You need to sign in or sign up before continuing."}
并在服务器控制台上发出警告
WARNING: Can't verify CSRF token authenticity
此时我已退出,如果我自己刷新页面,我可以看到我不再登录。
发生了什么事?
我第一次退出后,我的第一个真实性令牌是否会过期?
我正在使用
rails (3.2.3)
devise (2.1.0)
提前致谢:)
答案 0 :(得分:1)
您必须发送authenticity_token
变量以及所有ajax请求。您可以从页面的元标记中填充它。