【发布时间】:2014-07-27 15:08:23
【问题描述】:
我使用他们网站https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview 上的说明为 Devise 设置了omniauth
我现在希望允许已经拥有帐户的用户透明地使用他们的 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
它似乎工作正常,但我想知道这段代码是否会引入我不知道的任何风险。设计对我来说是一个黑盒子。
【问题讨论】:
标签: ruby-on-rails authentication devise omniauth