8

我在使用 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)

提前致谢 :)

4

1 回答 1

1

authenticity_token您必须使用所有 ajax 请求发送变量。您可以从页面的元标记中填充它。

于 2012-07-31T11:20:33.763 回答