gpt4 book ai didi

ruby-on-rails - 设计 - 将 OAuth 与现有帐户合并

转载 作者:行者123 更新时间:2023-12-01 09:25:57 25 4
gpt4 key购买 nike

我使用他们网站 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

它似乎工作正常,但我想知道这段代码是否会引入我不知道的任何风险。设计对我来说是一个黑盒子。

最佳答案

只有在两个帐户都得到确认后才能关联帐户。谷歌是一家电子邮件提供商,因此电子邮件已经在他们的一端得到确认。但是,您并没有检查您已经存在的用户帐户是否得到确认。

因此,如果我知道您的电子邮件,我可以使用它在您的网站上注册,然后等待您稍后使用 Google 登录。然后我就可以访问您的帐户了。

您应该只在 Devise's confirmed? method 的情况下合并帐户返回真。

关于ruby-on-rails - 设计 - 将 OAuth 与现有帐户合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24080254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com