Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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

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 设计,所有请求在更新Rails后返回401(4.1.7至4.1.10)_Ruby On Rails_Ruby On Rails 4_Devise - Fatal编程技术网

Ruby on rails 设计,所有请求在更新Rails后返回401(4.1.7至4.1.10)

Ruby on rails 设计,所有请求在更新Rails后返回401(4.1.7至4.1.10),ruby-on-rails,ruby-on-rails-4,devise,Ruby On Rails,Ruby On Rails 4,Devise,设计有问题 我整个周末都在胡闹,没用,也许你们当中有人知道怎么回事 我可以成功创建并登录,用户返回201和所有正确的内容(用户令牌和电子邮件令牌),但是登录后的任何请求都会被401拒绝 #app/controllers/application_controller.rb class ApplicationController < ActionController::API include ActionController::MimeResponds include ActionCo

设计有问题

我整个周末都在胡闹,没用,也许你们当中有人知道怎么回事

我可以成功创建并登录,用户返回201和所有正确的内容(用户令牌和电子邮件令牌),但是登录后的任何请求都会被401拒绝

#app/controllers/application_controller.rb
class ApplicationController < ActionController::API
  include ActionController::MimeResponds
  include ActionController::HttpAuthentication::Token::ControllerMethods
  include AuthenticatorHelper
  # # Prevent CSRF attacks by raising an exception.
  # # For APIs, you may want to use :null_session instead.
  # protect_from_forgery with: :exception
  helper_method :after_actions

  # Use Devise to authenticate user before every action
  before_filter :authenticate_user!
  private
    def id_filters
      p = params.permit(ids:[])
      return nil if p.blank?
      p[:ids].map {|x| x.to_i}
    end
end
位于my Rails应用程序上方的Ember应用程序每次都会发送正确的标题:
Token user_Token=“FEHR4ZpTGzsUSFvyzyKv”,user_email=”taylor@yolo.com“
并且在我更新Rails时没有更改

当我进入调试器时,我注意到另一件奇怪的事情是在我的会话控制器中的
签名之前执行
之前的过滤器:authenticate\u user
。这是控制器的代码

#app/controllers/sessions_controller.rb
class SessionsController < Devise::SessionsController
  def create
    respond_to do |format|
      format.html { super }
      format.json do
        self.resource = warden.authenticate!(auth_options)
        sign_in(resource_name, resource)
        data = {
          user_token: self.resource.authentication_token,
          user_email: self.resource.email
        }
        render json: data, status: 201
      end
    end
  end
end
#app/controllers/sessions_controller.rb
类sessioncontroller

有没有人知道Rails的哪些变化会导致这个问题?有预感吗?可能是其他原因导致了这个问题吗?任何猜测都将不胜感激!提前感谢您在这个问题上提供的任何帮助,如果我希望看到更多的代码,请告诉我

我已经把范围缩小到4.1.7到4.1.8之间的rails更新。看起来像
:authenticate\u user\u from\u token未正确预编。在
ApplicationController
中,将
prepend\u添加到\u过滤器之前:从\u令牌验证\u用户\u。如果您的代码再次工作,则使用
AuthenticatorHelper#included
方法时出现问题。
#app/controllers/sessions_controller.rb
class SessionsController < Devise::SessionsController
  def create
    respond_to do |format|
      format.html { super }
      format.json do
        self.resource = warden.authenticate!(auth_options)
        sign_in(resource_name, resource)
        data = {
          user_token: self.resource.authentication_token,
          user_email: self.resource.email
        }
        render json: data, status: 201
      end
    end
  end
end