gpt4 book ai didi

ruby-on-rails - Omniauth 认证失败回调处理

转载 作者:行者123 更新时间:2023-12-04 05:34:07 30 4
gpt4 key购买 nike

我正在使用 omniauthomniauth-identity用于通过 Google、Facebook 和传统用户名/密码进行身份验证。除了身份验证失败的情况外,我的所有工作都很好。失败时,例如输入无效密码时,omniauth 将调用 /auth/failure .我已经将它映射到一个 Controller ,该 Controller 重定向到一个适当的页面并显示一个 flash 消息。我遇到的问题是我无法让闪光灯实际显示。示例代码:

routes.rb :

match "/auth/failure" => "sessions#failure"

在 Controller 中它调用:
def failure
redirect_to root_url, alert: "Authentication failed, please try again."
end

由于 omniauth 正在做的任何事情和重定向,我觉得 flash 正在丢失。我知道查看代码是正确的,因为它会闪烁其他内容,例如成功登录消息。我很感激有关如何调整我的示例以显示 Flash 消息的建议,或者对替代 omniauth 故障处理机制的建议。谢谢。

最佳答案

我在上一个项目中遇到了同样的问题。这是一个错误。将以下猴子补丁添加到您的 config/initializers/omniauth.rb

  # Omniauth failure monkey patch
on_failure do |env|
message_key = env['omniauth.error.type']
origin_query_param = env['omniauth.origin'] ? "&origin=#{CGI.escape(env['omniauth.origin'])}" : ""
strategy_name_query_param = env['omniauth.error.strategy'] ? "&strategy=#{env['omniauth.error.strategy'].name}" : ""
extra_params = env['omniauth.params'] ? "&#{env['omniauth.params'].to_query}" : ""
new_path = "#{env['SCRIPT_NAME']}#{OmniAuth.config.path_prefix}/failure?message=#{message_key}#{origin_query_param}#{strategy_name_query_param}#{extra_params}"
Rack::Response.new(["302 Moved"], 302, 'Location' => new_path).finish
end

关于ruby-on-rails - Omniauth 认证失败回调处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14743471/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com