надзиратель custom_failure - PullRequest
       13

надзиратель custom_failure

4 голосов
/ 17 декабря 2011

Я использую devise для аутентификации API. Я переписал 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! метод.

Ответы [ 2 ]

2 голосов
/ 31 июля 2013

Вы должны реализовать свое собственное приложение сбоя.Вы можете посмотреть и / или унаследовать от устройства devise по умолчанию здесь https://github.com/plataformatec/devise/blob/master/lib/devise/failure_app.rb

Чтобы установить его, в вашем файле конфигурации config / initializers / devise.rb:

Devise.setup do |config|
  config.warden do |manager|
    manager.failure_app = CustomFailureApp
  end
end
1 голос
/ 18 декабря 2011

В вашем файле локали (файл в каталоге config / locales /), в зависимости от конфигурации i18n (для английского языка это en.yml), добавьте:

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

Конечно, подставьте My custom message for invalid login к сообщению, которое вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...