Google、Facebook、および従来のユーザー名/パスワードを介した認証にomniauthとomniauth-identityを使用しています。認証が失敗した場合を除いて、すべてうまく機能しています。失敗すると、たとえば、無効なパスワードを入力すると、omniauthはを呼び出します/auth/failure
。これを、適切なページにリダイレクトしてフラッシュメッセージを表示するコントローラーにマップしました。私が抱えている問題は、フラッシュを実際に表示できないことです。コード例:
でroutes.rb
:
match "/auth/failure" => "sessions#failure"
コントローラでは、次のように呼び出します。
def failure
redirect_to root_url, alert: "Authentication failed, please try again."
end
omniauthが実行していることとリダイレクトの組み合わせにより、フラッシュが失われているように感じます。ログインメッセージの成功など、他のものが点滅するため、ビューコードが正しいことはわかっています。フラッシュメッセージを表示するために例を微調整する方法に関する提案、または代替のomniauth障害処理メカニズムに関する提案をいただければ幸いです。ありがとう。