2013-02-27 75 views
0

我試圖設法返回401和錯誤消息時試圖請求沒有適當的身份驗證端點。設計JSON API返回406而不是401,因爲重定向

目前,這是發生了什麼事:

發起者的HomeController GET 「/api/v1/home/index.json」 爲127.0.0.1,在2013年2月27日2時40分22秒+0000 處理#INDEX作爲JSON 在0毫秒

完成401未授權發起者SessionsController#新的GET 「/api/v1/sign_in.json」 爲127.0.0.1,在2013年2月27日2點40分22秒+0000 處理JSON 已完成406在1毫秒內不可接受(ActiveRecord:0.0ms)

如何可以我停止設計反彈到sign_in,而是讓它返回一個401/json響應。

我在想這可能與我嘗試過的CustomFailureApp有關,但我不確定CustomFailureApp是否在這種特定情況下被調用。

回答

1

您可以製作自定義失敗應用程序。

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 
相關問題