Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 在Rails 4应用程序中捕获失败的OmniAuth登录尝试信息_Ruby On Rails 4_Omniauth - Fatal编程技术网

Ruby on rails 4 在Rails 4应用程序中捕获失败的OmniAuth登录尝试信息

Ruby on rails 4 在Rails 4应用程序中捕获失败的OmniAuth登录尝试信息,ruby-on-rails-4,omniauth,Ruby On Rails 4,Omniauth,目标:我试图让RubyonRails应用程序在用户登录OmniAuth失败时向我发送电子邮件。我希望电子邮件包括1表单中输入的用户名,2密码字段的MD5散列 障碍:OmniAuth在成功登录后返回POST,在身份验证失败后返回GET。SuccessPost包含用户名和过滤后的密码,但FailGet不包含这两个参数 所以我想我的问题是我能让OmniAuth返回我想要的参数吗?如果没有,我如何让Rails在发布到OmniAuth后记住表单数据?我给OmniAuth团队发了电子邮件,他们给了我下面的解

目标:我试图让RubyonRails应用程序在用户登录OmniAuth失败时向我发送电子邮件。我希望电子邮件包括1表单中输入的用户名,2密码字段的MD5散列

障碍:OmniAuth在成功登录后返回POST,在身份验证失败后返回GET。SuccessPost包含用户名和过滤后的密码,但FailGet不包含这两个参数


所以我想我的问题是我能让OmniAuth返回我想要的参数吗?如果没有,我如何让Rails在发布到OmniAuth后记住表单数据?

我给OmniAuth团队发了电子邮件,他们给了我下面的解决方案,非常感谢

您可以通过添加on_故障操作来进行自定义故障处理

OmniAuth.config.on_failure=Proc.new{| env | do stuff}

例如,是默认的失败端点

因此,我在config/initializers/omniauth.rb中添加了以下内容:

OmniAuth.config.on_failure = Proc.new{|env|
myLog = ActiveSupport::TaggedLogging.new(Logger.new("log/omniauth_log.txt"))
myLog.tagged("OmniAuth", "ENV") { myLog.info "Failed login attempt - username: #{env["rack.request.form_hash"]["username"]}, password: #{env["rack.request.form_hash"]["password"]} "}
OmniAuth::FailureEndpoint.new(env).redirect_to_failure}
…并正确记录用户名和密码。剩下要做的就是加密密码


如果要显示正在进行的所有操作,可以记录{env.inspect}本身。这是一个非常大的散列,但它也包含较小的散列,因此可能只记录一次{env.inspect},然后选择与任务相关的字段。

您是单独使用omniauth进行身份验证,还是将其与另一个引擎(如Desive/authlogic)结合使用?我认为我们是单独使用omniauth。我在Gemfile或外部库中没有看到任何对应于这两者的gem。