第一次尝试时设计验证失败,之后成功

时间:2013-01-23 14:12:20

标签: ruby-on-rails devise

我正在使用Devise(2.1.2)和Rails(3.2.9),我已启用基本身份验证(用于测试)。我正在使用CURL发布一个JSON POST请求,我看到了奇怪的行为。第一次发送请求时(服务器重启后)认证失败,但第二次发送完全相同的请求后成功。

调试时,似乎first_strategies在第一次尝试时为零,但在第二次尝试时填充了三种策略。

这种行为的原因是什么?

1 个答案:

答案 0 :(得分:0)

尝试:

<强>身份验证

curl -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -X POST http://localhost:3000/users/sign_in \
  -d "{'user' : { 'email' : 'test@example.com', 'password' : 'password'}}" \
  -c cookie

显示:

curl -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -X GET http://localhost:3000/pages/1.xml \
  -b cookie

对于post次请求 -

对于Rails 3中的非GET请求,您需要 CSRF令牌

这是因为Rails默认情况下会向表单添加真实性令牌,以防止恶意伪造提交的参数。由于您没有在请求中提供此令牌,因此rails不接受它。你可以用

绕过这个
skip_before_filter :verify_authenticity_token