2

デバイスでログを記録しているときに、警告が表示されます: CSRF トークンの信頼性を確認できず、401 の無許可のメッセージが表示されます。有効なユーザーであっても、ログイン ページにリダイレクトされます。

私は多くの解決策を試しましたが、それでも問題を理解できませんでした。パラメータを確認したところ、警告が発生するはずだった認証トークンが送信されています: CSRF トークンの信頼性の問題を確認できません。

これは私のログファイルです

Started POST "/admin/sign_in" for 127.0.0.1 at 2013-06-20 13:12:27 +0545
Processing by Devise::SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"YWAa7xOf+u0ButjnaE/kz5RmL3SZKFs
x51pFbMxDqiw=", "admin"=>{"email"=>"shobhab@gmail.com", "password"=>"[FILTERED]"}}

WARNING: Can't verify CSRF token authenticity

Admin Load (0.7ms)  SELECT `admins`.* FROM `admins` WHERE `admins`.`email` = 'shobhab@gm                          ail.com' LIMIT 1
(0.3ms)  BEGIN
(0.6ms)  UPDATE `admins` SET `last_sign_in_at` = '2013-06-20 07:27:20', `current_sign_i                          n_at` = '2013-06-20 07:27:28', `sign_in_count` = 37, `updated_at` = '2013-06-20 07:27:28' WHERE `admins`.`id` =      4
(19.0ms)  COMMIT
Redirected to home page
Completed 302 Found in 179ms (ActiveRecord: 0.0ms)
Started GET "/" for 127.0.0.1 at 2013-06-20 13:12:28 +0545
Processing by Admin::DashboardController#index as HTML
Completed 401 Unauthorized in 1ms

前もって感謝します

それはdeviseによって生成されたフォームです

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:id => "login_    form"}) do |f| %>
     <h2>Log in to your account:</h2>
     <%= f.label :email, 'Email:' %>
     <%= f.text_field :email, :class => "login" %><br /><br />
    <%= f.label :password, 'Password:' %>
    <%= f.password_field :password, :class => "login" %><br /><br />
    <div class="pagination-right">
  <%= f.submit "sign in"%>
    <%= link_to "Forgot Password?", new_admin_password_path %>
    </div>
    <p class="hr">Don't have an account?</p>
    <p>Please contact your Admin or contact Talintel Support</p>
    <% end %>

非表示フィールドでは、認証トークンを生成しています

<div style="margin:0;padding:0;display:inline">
<input type="hidden" value="✓" name="utf8">
<input type="hidden" value="6yM4gkyWC94ej1X2Wzn/l17xTpIymsx9wCEuw5aOJbQ=" name="authenticity_token">
</div>
4

1 に答える 1

0

今日、2.1 から 2.2.8 へのアップグレード中にこれに遭遇し、この変更を疑っ

そのため、devise/hooks/csrf_cleaner にブレークポイントを配置して、どこから呼び出されているかを調べました。セッションに基づいてユーザーをログインさせ、トークンをクリアする current_user をチェックする before_filter がありました。

HTH。

于 2014-01-21T00:45:54.420 に答える