0

当我试图在没有适当身份验证的情况下请求端点时,我试图设计返回 401 和错误消息。

目前这是正在发生的事情:

在 2013 年 2 月 27 日 02:40:22 +0000 由 HomeController#index 处理为 JSON 完成 401 未授权在 0 毫秒内开始 GET "/api/v1/home/index.json"

在 2013 年 2 月 27 日 02:40:22 +0000 由 SessionsController#new 作为 JSON 处理 127.0.0.1 开始 GET "/api/v1/sign_in.json" 在 1ms 内完成 406 Not Acceptable (ActiveRecord: 0.0ms)

我怎样才能停止设计让我跳到 sign_in 而是让它只返回一个 401/json 响应。

我认为这可能与我尝试过的 CustomFailureApp 有关,但我不确定在这种特定情况下是否调用了 CustomFailureApp。

4

1 回答 1

2

您可以制作自定义故障应用程序。

class JsonFailureApp < Devise::FailureApp
  def respond
    self.status = 401
    self.content_type = 'json'
    self.response_body = '{"error" : "Authentication error"}'
  end
end

将此添加到您的设计初始化程序

config.warden do |manager|
  manager.failure_app = JsonFailureApp
end
于 2014-02-22T23:21:42.093 回答