此错误在生产服务器上突然开始。 在本地一切正常。
我正在使用自己的基于身份验证令牌的体系结构。 authenticate_user是检查当前用户是否经过身份验证的功能。
I, [2018-04-28T07:20:53.095743 #1063] INFO -- : [af1e0a7c-41c9-4082-965a-
3327aae9fd99] Processing by Api::V1::AnalysisController#analysis as JSON
I, [2018-04-28T07:20:53.095838 #1063] INFO -- : [af1e0a7c-41c9-4082-965a-
3327aae9fd99] Parameters: {"customer_id"=>""}
I, [2018-04-28T07:20:53.098717 #1063] INFO -- : [af1e0a7c-41c9-4082-965a-
3327aae9fd99] [active_model_serializers] Rendered
ActiveModel::Serializer::Null with Hash (0.18ms)
I, [2018-04-28T07:20:53.098997 #1063] INFO -- : [af1e0a7c-41c9-4082-965a-
3327aae9fd99] Filter chain halted as :authenticate_user rendered or
redirected
I, [2018-04-28T07:20:53.099120 #1063] INFO -- : [af1e0a7c-41c9-4082-965a-
3327aae9fd99] Completed 401 Unauthorized in 3ms (Views: 2.8ms)
它正在我运行的差异服务器上工作。 两者之间的唯一区别是 1。我正在使用自定义异常来处理错误。并从控制器手中救出他们。 2. Authenitcate_user方法直接呈现,不会引发任何异常。 3. 以前authenitcate_user是在某个方法之前调用的。现在这个没有唯一的字段。
可验证模块:
def authenticate_user
if current_user
true
else
render json: 'some error', status: 404
end
end
def current_user
@user = User.find_by(auth_token: request.headers['Authorization']) if request.headers['Authorization'].present?
@user if @user && @user.token_expiry > Time.now
end
控制器:
class Api::V1::AnalysisController < ApplicationController
include Authenticable
before_action :authenticate_user
不确定,但也许试试这个
def authenticate_user
if current_user
render json: 'success', status: 200
else
render json: 'error', status: 404
end
end
def current_user
return unless @user = User.find_by(auth_token: request.headers['Authorization'])
@user if @user.token_expiry > Time.now
end
我发现了这个问题, 问题出在服务器上的缓存和 cookie 处理中。 在 CloudFront 中对其进行了编辑,能够再次捕获请求标头。