即使X-CSRF-Token位于标题

时间:2015-07-23 21:28:43

标签: ruby-on-rails-4 ember.js devise ember-simple-auth

我知道这个话题有很多问题,但我还没有找到导致我问题的原因。

问题

我在我的rails服务器上收到消息无法验证CSRF令牌真实性即使我可以在Chrome上看到标题存在。 (如图所示)

X-CSRF-Token

我的设置

  • Rails 4.2作为后端RESTful API
  • Ember.js 1.11.3 for frontend
  • 设计
  • 灰烬-简单-AUTH。

我关注these instructions of how to setup ember-simple-auth-devise,它使用令牌进行身份验证。我做了一切相同但有一个例外,而不是将下一个代码放在ApplicationController内我定义了一个ApiController,以便将我的API逻辑与其余部分分开站点。

class ApiController < ActionController::Base

  protect_from_forgery with: :null_session

  before_action :authenticate_user_from_token!

  # I had to comment this line out in order to 
  # make the authentication work
  # before_filter :authenticate_user!

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(
      :username, :first_name, :last_name, :email, :password, :password_confirmation
    ) }
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(
      :username, :first_name, :last_name, :email, :password, :current_password
    ) }
  end

  private

  def authenticate_user_from_token!
    authenticate_with_http_token do |token, options|
      user_email = options[:email].presence
      user = user_email && User.find_by_email(user_email)

      if user && Devise.secure_compare(user.authentication_token, token)
        sign_in user, store: false
      end
    end
  end
end

请注意,我必须发表评论before_filter :authenticate_user!才能使身份验证工作。使用该行我只会收到401个未经授权的请求。

我希望有人可以给我一些见解:

- 为什么即使X-CSRF-Token位于标题中,我也无法验证CSRF令牌的真实性

- 为什么要保留我从示例说明中评论过的内容是否重要/必要?

提前致谢。

0 个答案:

没有答案