我使用OmniAuth作为一种让用户将社交网络链接到系统的方法。所以我的路线中有共同的匹配'/auth/:provider/callback', to: 'authentications#create'
。
这很好,我将特定用户的信息存储在表格中。但是,我有另一种使用OmniAuth的方法,它不应该与这个重叠。用户可以使用/ auth / facebook的调用登录系统,因此我不应该只将该信息存储到authentications表中,还应该将用户登录到系统中。
另一方面,登录的用户可能只想在不登录的情况下链接他/她的Facebook帐户,但是呼叫将在同一/auth/facebook
进行。所以我的问题是:我怎样才能发现对auth/facebook
的调用是从哪里完成的?
答案 0 :(得分:0)
一个想法是在您的身份验证控制器中有一个before_filter
,它只是检查用户是否已登录。 #sign_in?
可能看起来像这样:
def sign_in?
if @oauth.provider == 'facebook'
if current_user?
# then lets associate this facebook credentials with the logged-in user.
else
# user isn't logged in, so let's do that
sign_in(@authentication.account)
end
end
end