小编Jas*_*per的帖子

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

我使用他们网站上的说明为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是一种黑盒子.

authentication ruby-on-rails devise omniauth

3
推荐指数
1
解决办法
1110
查看次数

标签 统计

authentication ×1

devise ×1

omniauth ×1

ruby-on-rails ×1