github 上显示的示例魔法代码在我看来创建了重复的帐户,如果它被扩展以允许多个登录方法(这是 oauth 的全部要点)。您可以在此处的代码片段中看到,如果 login_from() 不成功,将调用 create_from()。
GITHUB 地址为 https://github.com/NoamB/sorcery-example-app/blob/master/app/controllers/oauths_controller.rb
def callback
provider = params[:provider]
begin
if @user = login_from(provider)
redirect_to root_path, :notice => "Logged in from #{provider.titleize}!"
else
begin
@user = create_from(provider)
在所有情况下调查 create_from 的源代码都会创建一个新的用户帐户记录。如果用户帐户记录已经存在,这将是不正确的。
我的问题:如果用户帐户是通过 facebook 以外的其他方式创建的,那么在第一次 facebook 连接时应该调用什么魔法方法。 login_from 会失败,create_from 会生成重复的用户记录吗?
最佳答案
您可以使用 def create_and_validate_from(provider) .
它将验证用户的电子邮件/用户名是否已经存在。如果为真,他会将信息存储到 session 中并可以呈现为注册表单。
如果您想将一些提供商添加到您的帐户中,您可以使用 def add_provider_to_user(provider) .
关于ruby-on-rails-3 - Rails 魔法错误?创建重复的用户帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9461459/