デバイスユーザー向けの非常にシンプルなサインインページがあります。間違ったデータを送信すると、ログに「401 Unauthorized」と表示され、sign_in ページにリダイレクトされます。ユーザーにエラー メッセージを表示する方法がわかりませんでした。
devise::sessions_controller#create
私は次のように、どれを見ました、
# POST /resource/sign_in
def create
resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
def auth_options
{ :scope => resource_name, :recall => "#{controller_path}#new" }
end
認証が失敗した場合、フローは中断されwarden.authenticate
、ユーザーはサインイン ページである「新しい」ページにリダイレクトされます。
ユーザーにinvalid_credentialsツールチップ/flash_messageを表示するだけです。そのため、認証が失敗したときを変更して、エラーメッセージを設定しました。:recall => "#{controller_path}#handle_create_fail" (look at
auth_options
) which calls handle_create_fails
devise がすでに提供しているものを見落としたかどうかはわかりません。
どうすればこれをうまく処理できますか?