ruby-on-rails-3 - Rails 魔法错误?创建重复的用户帐户

标签 ruby-on-rails-3 authentication sorcery

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/

相关文章:

javascript - 在Rails中,我可以在JS响应后在 Controller 操作中执行ActionMailer逻辑吗?

asp.net-mvc - Elmah.Mvc 2.0 自定义身份验证

authentication - CQ 如何验证每个请求?

ruby-on-rails - 如何使用 Sorcery 测试 FactoryGirl 生成的用户?

android - 通过 RubyCAS 使用单个访问 token 访问 Rails API

ruby - 来自 created_at 的不同天数的 ActiveRecord 计数?

ruby-on-rails - 使用 PDFKit 开始新的一页

ruby-on-rails - 缓存有限的关联

ios - WKWebView iOS 10.3 因 didReceiveAuthenticationChallenge 崩溃?

ruby-on-rails - 重定向和登录或登录和重定向?