Ruby on rails 使用Omniauth,如何记录所有身份验证请求?
在我的应用程序中使用omniauth,要让用户使用Google oAuth2进行身份验证,我将用户重定向到: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请求连接的人。一个糟糕的解决方案是围绕
/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
有关更多信息,请查看