Jas*_*per 3 authentication ruby-on-rails devise omniauth
我使用他们网站上的说明为Devise设置了omniauth:https: //github.com/plataformatec/devise/wiki/OmniAuth:-Overview
我现在想要允许已经拥有帐户的用户使用他们的Google帐户透明地登录:如果Google帐户使用与之前注册的用户相同的电子邮件地址,则该网站应该使用该帐户登录用户.
我只是在链接上修改了建议的代码,如下所示:
def self.from_omniauth(auth)
user = User.find_by(email: auth.info.email)
if user
user.skip_confirmation!
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
return user
end
where(auth.slice(:provider, :uid)).first_or_create do |user|
user.skip_confirmation!
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.info.email
user.password = Devise.friendly_token[0,20]
user.name = auth.info.name
end
end
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但我想知道这段代码是否引入了我不知道的任何风险.对我来说,Devise是一种黑盒子.
如果帐户都已确认,您只能链接帐户.Google是一家电子邮件提供商,因此电子邮件已在他们的最终确认.但是,您不会检查您的用户帐户是否已确认.
因此,如果我知道您的电子邮件,我可以在您的网站上注册,并等待您稍后再登录Google.然后我就可以访问您的帐户了.
如果Devise的confirmed?
方法返回true,则只应合并帐户.
归档时间: |
|
查看次数: |
1110 次 |
最近记录: |