结合使用 Facebook 登录(假设我将使用 Omniauth gem)和电子邮件+密码登录的最佳做法是什么?
我看了一些博客,看了 Railscasts,我知道每个人都在使用 Devise gem 和 Omniauth。但我正在寻找一些不同的观点。
子问题:
我正在考虑从头开始创建电子邮件+密码注册(为此不使用任何 gem,让它保持快速和轻便)那么你对此有什么建议吗?或者,如果您有特定的 gem,请让它快点。
对于处理 Facebook 身份验证的 Oauth2 gem(替代 Omniauth),您有任何其他建议吗?
很抱歉我在这里问这个基本问题,但我没有找到很多答案(我找到的大部分答案都是基于 Devise 的)
最佳答案
这是我在网络上看到的大多数示例中的做法
基本上,当您使用电子邮件+密码注册时,您是在直接为用户模型创建行(不触及 Authent.model),而在使用 Omniauth 注册时,您是在创建与用户模型通信的新身份验证。
基本上在下次登录时你会做这样的事情:
if (user.password == 'xxx')
login
elsif user.authentication.uid == 'xxx'
login
else
'hello signup !'
end
所以你在两个模型之间切换,强奸(抱歉这个词)用户模型女巫应该只持有用户信息
解决方案,在某种程度上,我认为是正确的(根据我的经验和与同事的讨论,但我仍然不能 100% 确定这是正确的答案)
如您所见,即使是用户名+密码也会通过 Authent。模型,这意味着站点用户名+密码本身充当提供者
所以为了绝对正确,它应该是这样的
- 场景 1
注册FB:将FB uid和authKey保存到认证表中,然后创建用户
- 场景 2
使用密码注册:您在 AppPass 表中创建新行,然后在身份验证表中创建行(因为访问提供者女巫实际上是您的应用程序),然后创建用户
为什么?
因为现在当用户登录时,总是通过 Authent。模型,不在 2 个模型(Authent. 和 User 模型)之间建立条件
现在有人可以告诉我,...这是一个好方法吗:D?
关于ruby-on-rails - omniauth 和电子邮件密码注册的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247145/