Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 使用Omniauth,如何记录所有身份验证请求?_Ruby On Rails_Ruby On Rails 3_Omniauth - Fatal编程技术网

Ruby on rails 使用Omniauth,如何记录所有身份验证请求?

Ruby on rails 使用Omniauth,如何记录所有身份验证请求?,ruby-on-rails,ruby-on-rails-3,omniauth,Ruby On Rails,Ruby On Rails 3,Omniauth,在我的应用程序中使用omniauth,要让用户使用Google oAuth2进行身份验证,我将用户重定向到: /users/auth/google_oauth2 如果用户批准请求,则调用AuthenticationsController#create 使用AuthenticationsController#create-我可以添加事件跟踪来记录批准google auth的用户的#。我没有的是我发送给批准的数字,这意味着我没有转换率 我如何跟踪那些点击URL请求连接的人。一个糟糕的解决方案是围绕

在我的应用程序中使用omniauth,要让用户使用Google oAuth2进行身份验证,我将用户重定向到:

/users/auth/google_oauth2
如果用户批准请求,则调用AuthenticationsController#create

使用AuthenticationsController#create-我可以添加事件跟踪来记录批准google auth的用户的#。我没有的是我发送给批准的数字,这意味着我没有转换率


我如何跟踪那些点击URL请求连接的人。

一个糟糕的解决方案是围绕方法策略“请求”调用构建一个过滤器,并在那里进行跟踪

在初始值设定项中:

OmniAuth::Strategy.class_eval do
  def request_call_with_tracking
    log :info, "Im running before the actual request_call"
    Tracker.hit(name) #name will return the provider
    request_call_without_tracking
  end
  alias_method_chain :request_call, :tracking
end

您可以通过使用OmniAuth设置阶段来实现这一点。您可以将
:setup
选项传递给OmniAuth提供程序,该程序将在执行身份验证之前执行。您可以在此过程中添加事件跟踪

因此,如果您有一些tracker类,您可以这样做:

use OmniAuth::Builder do
  provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'],
    :setup => lambda { |env|
      Tracker.track
    }
end
有关更多信息,请查看