我正在尝试设置Devise将401返回到未经授权的API请求而不是重定向,但我遇到了一块巨石。这就是我如何重写它的自定义失败行为:
class CustomFailure < Devise::FailureApp
include ActionController::Head
include ActionController::MimeResponds
def respond
respond_to do |format|
format.html {
super
}
format.any { head :status => 401}
end
end
end
但是,我收到此错误:
undefined local variable or method `lookup_context' for #<CustomFailure:0x000001031f6220>
并指向respond_to do |format|
行
我做错了什么?
答案 0 :(得分:7)
def respond
unless request.format.to_sym == :html
http_auth
else
super
end
end
Devise :: FailureApp是ActionController :: Metal的继承形式,它在低级别与Rack交互,所以没有respond_to查看相关的东西