ruby-on-rails - omn​​iauth 和电子邮件密码注册的最佳做法是什么?

标签 ruby-on-rails ruby devise authlogic omniauth

结合使用 Facebook 登录(假设我将使用 Omniauth gem)和电子邮件+密码登录的最佳做法是什么?

我看了一些博客,看了 Railscasts,我知道每个人都在使用 Devise gem 和 Omniauth。但我正在寻找一些不同的观点。

子问题:

我正在考虑从头开始创建电子邮件+密码注册(为此不使用任何 gem,让它保持快速和轻便)那么你对此有什么建议吗?或者,如果您有特定的 gem,请让它快点。

对于处理 Facebook 身份验证的 Oauth2 gem(替代 Omniauth),您有任何其他建议吗?

很抱歉我在这里问这个基本问题,但我没有找到很多答案(我找到的大部分答案都是基于 Devise 的)

最佳答案

这是我在网络上看到的大多数示例中的做法

auth_with_devise_and_ominauth

基本上,当您使用电子邮件+密码注册时,您是在直接为用户模型创建行(不触及 Authent.model),而在使用 Omniauth 注册时,您是在创建与用户模型通信的新身份验证。

基本上在下次登录时你会做这样的事情:

 if (user.password == 'xxx')
    login
 elsif user.authentication.uid == 'xxx'
    login
 else
    'hello signup !'
 end

所以你在两个模型之间切换,强奸(抱歉这个词)用户模型女巫应该只持有用户信息

解决方案,在某种程度上,我认为是正确的(根据我的经验和与同事的讨论,但我仍然不能 100% 确定这是正确的答案)

enter image description here

如您所见,即使是用户名+密码也会通过 Authent。模型,这意味着站点用户名+密码本身充当提供者

所以为了绝对正确,它应该是这样的 enter image description here

  • 场景 1

注册FB:将FB uid和authKey保存到认证表中,然后创建用户

  • 场景 2

使用密码注册:您在 AppPass 表中创建新行,然后在身份验证表中创建行(因为访问提供者女巫实际上是您的应用程序),然后创建用户

为什么?

因为现在当用户登录时,总是通过 Authent。模型,不在 2 个模型(Authent. 和 User 模型)之间建立条件

现在有人可以告诉我,...这是一个好方法吗:D?

关于ruby-on-rails - omn​​iauth 和电子邮件密码注册的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247145/

相关文章:

ruby-on-rails - 与 Devise 的多个 LDAP 连接

ruby-on-rails - Rails 3 的最佳验证码库

javascript - 将 jQuery 日期与 Rails 日期进行比较

ruby - 同时运行延迟作业和 Sidekiq

ruby-on-rails - 设计确认在第一次发送时无效

devise - Ruby on Rails - 设计错误 : undefined local variable or method

ruby-on-rails - 使用 Capistrano 和 ActiveStorage 部署后未显示图像

ruby-on-rails - Rails activerecord 查询比较同一记录的两个属性

ruby - 从网页中抓取所有可见文本

ruby-on-rails - Ruby 升级权限错误(Errno::EACCES)