0

適切な認証なしでエンドポイントをリクエストしようとすると、401 とエラー メッセージを返すようにデバイスを取得しようとしています。

現在、これが起こっていることです:

2013-02-27 02:40:22 に 127.0.0.1 に対して GET "/api/v1/home/index.json" を開始 +0000 HomeController#index で JSON として処理完了 0ms で 401 Unauthorized

2013-02-27 02:40:22 に 127.0.0.1 の GET "/api/v1/sign_in.json" を開始 +0000 JSON として SessionsController#new で処理 406 Not Acceptable in 1ms (ActiveRecord: 0.0ms)

devise が私を 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 に答える