Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 余烬简单身份验证可以';即使X-CSRF-token在标头中,也不能验证CSRF令牌的真实性_Ruby On Rails 4_Ember.js_Devise_Ember Simple Auth - Fatal编程技术网

Ruby on rails 4 余烬简单身份验证可以';即使X-CSRF-token在标头中,也不能验证CSRF令牌的真实性

Ruby on rails 4 余烬简单身份验证可以';即使X-CSRF-token在标头中,也不能验证CSRF令牌的真实性,ruby-on-rails-4,ember.js,devise,ember-simple-auth,Ruby On Rails 4,Ember.js,Devise,Ember Simple Auth,我知道有很多关于这个话题的问题,但我还没有发现是什么导致了我的问题 问题 我在我的rails服务器上收到消息,无法验证CSRF令牌的真实性,即使我可以在Chrome上看到标头存在。(如图所示) 我的设置 Rails 4.2作为后端RESTful API 前端的Ember.js 1.11.3 设计 余烬简单授权 我遵循了通过令牌进行身份验证的方法。除了一个例外,我没有将下一个代码放入ApplicationController中,而是定义了一个ApiController类,试图将我的API逻辑

我知道有很多关于这个话题的问题,但我还没有发现是什么导致了我的问题

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

我的设置
  • Rails 4.2作为后端RESTful API
  • 前端的Ember.js 1.11.3
  • 设计
  • 余烬简单授权
我遵循了通过令牌进行身份验证的方法。除了一个例外,我没有将下一个代码放入
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
类ApiController
请注意,我必须在\u filter:authenticate\u user之前注释
输出以使身份验证生效。通过这条线,我只收到401个未经授权的请求

我希望有人能给我一些见解:

-为什么即使X-CSRF-token在标头中,我也无法验证CSRF令牌的真实性

-为什么保留示例说明中我评论的行很重要/必要?

提前谢谢