Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将使用facebook登录添加到使用电子邮件身份验证的现有登录_Ruby On Rails_Railstutorial.org - Fatal编程技术网

Ruby on rails 将使用facebook登录添加到使用电子邮件身份验证的现有登录

Ruby on rails 将使用facebook登录添加到使用电子邮件身份验证的现有登录,ruby-on-rails,railstutorial.org,Ruby On Rails,Railstutorial.org,我遵循了Rails教程,所以我有一个工作的电子邮件身份验证系统,它不使用Desive。我想我应该添加一个使用Facebook按钮登录的按钮,这样用户就可以选择使用电子邮件或Facebook 关于如何做到这一点,我已经成功地遵循了许多指南。我可以从Facebook获得身份验证 我不确定该怎么处理它。我的用户模型有一个带有状态验证的密码摘要字段。以前,所有用户都有密码。但是如果用户注册了Facebook,就没有密码了。现在我有两种用户 你做什么?我可以破解代码来解释密码不存在的可能性,但这似乎有些草

我遵循了Rails教程,所以我有一个工作的电子邮件身份验证系统,它不使用Desive。我想我应该添加一个使用Facebook按钮登录的按钮,这样用户就可以选择使用电子邮件或Facebook

关于如何做到这一点,我已经成功地遵循了许多指南。我可以从Facebook获得身份验证

我不确定该怎么处理它。我的用户模型有一个带有状态验证的密码摘要字段。以前,所有用户都有密码。但是如果用户注册了Facebook,就没有密码了。现在我有两种用户


你做什么?我可以破解代码来解释密码不存在的可能性,但这似乎有些草率。

尝试使用条件验证。见下例:

validates :surname, presence: true, if: "name.nil?"

尝试使用条件验证。见下例:

validates :surname, presence: true, if: "name.nil?"

当您向Facebook注册用户时,需要在后端生成一个随机密码,并将其分配给用户对象。您可以使用
securerandom

require 'securerandom'
password = SecureRandom.hex(10) #=> "fe87683d536a51705357"
user.password = user.password_confirmation = password
user.save
此解决方案被许多web应用程序使用,在后期,如果用户希望使用密码登录,则可以使用重置密码链接生成相同的密码


希望这有帮助

当您向Facebook注册用户时,需要在后端生成一个随机密码并将其分配给用户对象。您可以使用
securerandom

require 'securerandom'
password = SecureRandom.hex(10) #=> "fe87683d536a51705357"
user.password = user.password_confirmation = password
user.save
此解决方案被许多web应用程序使用,在后期,如果用户希望使用密码登录,则可以使用重置密码链接生成相同的密码


希望这有帮助

但是,允许零密码不是一个潜在的安全问题吗?我不想让某人在没有密码的情况下轻松登录帐户。但是,允许零密码不是一个潜在的安全问题吗?我不想让别人在没有密码的情况下轻松登录帐户。哦,酷,这是我想尝试的解决方法之一。我不确定这是否是最佳实践。我可以试一试。我的另一个想法是有一个单独的授权对象,但这是一个相当大的变化。哦,酷,这是我想尝试的解决办法之一。我不确定这是否是最佳实践。我可以试一试。我的另一个想法是有一个单独的授权对象,但这是一个相当大的变化。