Ruby on rails 设计,所有请求在更新Rails后返回401(4.1.7至4.1.10)
设计有问题 我整个周末都在胡闹,没用,也许你们当中有人知道怎么回事 我可以成功创建并登录,用户返回201和所有正确的内容(用户令牌和电子邮件令牌),但是登录后的任何请求都会被401拒绝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
#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