5

API認証にはdeviseを使用しています。私はこのようなメソッドを上書きSessionController:createしました:

class Users::SessionsController < Devise::SessionsController

  def create
    resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
    set_flash_message(:notice, :signed_in) if is_navigational_format?
    val = sign_in(resource_name, resource)
    current_user.reset_authentication_token!

    respond_to do |format|
      format.html do
        respond_with resource, :location => redirect_location(resource_name, resource)
      end
      format.json do
        render :json => { :status => OK_OK, :auth_token => current_user.authentication_token }.to_json, :status => :ok
      end
    end
  end
end 

ご覧のとおり、JSONで認証する場合はステータスコードで応答します。認証に失敗すると、次の応答が返されます。

{"error":"Invalid email or password."}

このメッセージを変更するにはどうすればよいですか?warden.authenticate!このメソッドをどこで上書きするかわかりません。

4

2 に答える 2

3

独自の失敗アプリを実装する必要があります。https://github.com/plataformatec/devise/blob/master/lib/devise/failure_app.rbで、deviseのデフォルトを確認および/または継承できます 。

設定するには、config / initializers/devise.rb設定ファイルで次のようにします。

Devise.setup do |config|
  config.warden do |manager|
    manager.failure_app = CustomFailureApp
  end
end
于 2013-07-31T00:12:53.760 に答える
1

ロケールファイル(config / locales /ディレクトリにあるファイル)で、i18n構成(英語の場合はen.yml)に応じて、次を追加します。

en:
  devise:
    invalid: 'My custom message for invalid login'

もちろん、My custom message for invalid login必要なメッセージに置き換えてください。

于 2011-12-17T20:22:38.687 に答える