问题描述
我正在使用 devise (最新版本 - 3.2.0)与 rails (最新版本 - 4.0.1 )
I am using devise (latest version - 3.2.0) with rails (latest version - 4.0.1)
我正在进行简单的身份验证(没有ajax或api),并获得CSRF真实性令牌的错误。在2013年以前检查POST请求
I'm doing simple authentication (without ajax or api) and getting an error for CSRF authenticity token. Check the POST request below
started POST "/users/sign_in" for 127.0.0.1 at 2013-11-08 19:48:49 +0530 Processing by Devise::SessionsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"SJnGhXXUXjncnPhCdg3muV2GYCA8CX2LVFV78pqddD4=", "user"=> {"email"=>"[email protected]", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"} Can't verify CSRF token authenticity User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 (0.1ms) begin transaction SQL (0.4ms) UPDATE "users" SET "last_sign_in_at" = ?, "current_sign_in_at" = ?, "sign_in_count" = ?, "updated_at" = ? WHERE "users"."id" = 2 [["last_sign_in_at", Fri, 08 Nov 2013 14:13:56 UTC +00:00], ["current_sign_in_at", Fri, 08 Nov 2013 14:18:49 UTC +00:00], ["sign_in_count", 3], ["updated_at", Fri, 08 Nov 2013 14:18:49 UTC +00:00]] (143.6ms) commit transaction Redirected to http://localhost:3000/ Completed 302 Found in 239ms (ActiveRecord: 144.5ms | Search: 0.0ms)
根网址指向 home#new ,就像
class HomeController < ApplicationController before_action :authenticate_user! def index end end
Sign_in页面生成的html视图就像:
Sign_in page generated html view is like:
-
元标记
meta tags
<meta content="authenticity_token" name="csrf-param" /> <meta content="aV+d7Z55XBJF2VtyL8V3zupR3OwhaQ6UHNtlQLBQf5Y=" name="csrf-token" />
form
form
<form accept-charset="UTF-8" action="/users/sign_in" class="new_user" id="new_user" method="post"> <div style="margin:0;padding:0;display:inline"> <input name="utf8" type="hidden" value="✓" /> <input name="authenticity_token" type="hidden value="aV+d7Z55XBJF2VtyL8V3zupR3OwhaQ6UHNtlQLBQf5Y=" /> </div> <div><label for="user_email">Email</label><br /> <input autofocus="autofocus" id="user_email" name="user[email]" type="email" value="" /> </div> <div><label for="user_password">Password</label><br /> <input id="user_password" name="user[password]" type="password" /></div> <div><input name="user[remember_me]" type="hidden" value="0" /> <input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1" /> <label for="user_remember_me">Remember me</label></div> <div><input name="commit" type="submit" value="Sign in" /></div> </form>
认证请求甚至更新了 last_sign_in_a t 和 sign_in_count 值,但是当我尝试访问控制器中的 current_user 时,它会 nil 。
The authentication request even updates the last_sign_in_at and sign_in_count values, but when I try to access current_user in controller it comes as nil.
根据我的说法,实际上并没有登录 user 。但是问题来了为什么在用户中更新 last_sign_in_at / sign_in_count code> table?
According to me it is not actually signing in user. But then question comes "why it is updating last_sign_in_at/sign_in_count value in the user table ?"
推荐答案
devise gem没有问题。我删除了'rails-api'宝石,我的应用程序开始工作。
There was no problem with devise gem . I removed 'rails-api' gem and my app started working.
这篇关于设计用户sign_in给出CSRF令牌真实性令牌的认证错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!