omn​​iauth 和电子邮件密码注册最佳实践是什么?

2024-03-11

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

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

子问题:

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

对于处理 Facebook 身份验证的 Oauth2 gems(Omniauth 的替代方案),您还有其他建议吗?

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


这就是我在网络上大多数示例中看到的完成方式

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

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

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

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

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

正如您所看到的,甚至用户+密码也会通过 Authen。模型,这意味着网站用户+密码本身充当提供者

so to be absolutly correct it should be look like this enter image description here

  • 场景1

与 FB 签约:将FB uid和authKey保存到身份验证表中,然后创建用户

  • 场景2

使用密码注册:您在 AppPass 表中创建新行,然后在 Authentication 表中创建行(作为对提供商的访问实际上是您的应用程序),然后创建用户

Why?

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

omn​​iauth 和电子邮件密码注册最佳实践是什么? 的相关文章

  • 使用 prawnto_2 gem 加载图像时,RAILS_ROOT 不再有效

    我正在将我的应用程序从 Rails 3 0 升级到 Rails 3 1 我已经尽可能地将旧插件转为 gems 其中包括用这个漂亮闪亮的新插件替换旧的 prawnto 插件对虾 2 https github com forrest prawn
  • Escape String - 在 Javascript 中输出rails字符串[重复]

    这个问题在这里已经有答案了 我正在尝试将字符串值分配给 erb 文件中的 javascript 对象 如下所示 var data name 问题是 如果name is Tom s small ears 的输出data name将会Tom x
  • 将 PDF 转换为 JPG 时质量低

    我正在尝试使用 Imagemagic RMAgick 将 PDF 文档转换为图像 原始 PDF 也是从图像创建的 不是原生矢量 PDF image Magick Image from blob original pdf self forma
  • Watir 脚本偶尔返回 Net::ReadTimeout 错误

    我有一个 Watir 脚本 偶尔会意外地返回此错误 Net ReadTimeout 我搜索了这个错误并发现这个问题 https stackoverflow com questions 47452276 watir get sometimes
  • `class_eval` 字符串中的变量范围是什么?

    我在用class eval编写要在当前类的上下文中执行的代码 在下面的代码中 我想添加一个用于属性值更改的计数器 class Class def attr count attr name attr name attr name to s a
  • Ruby Regex 舍入尾随零

    我正在寻找一个正则表达式来删除十进制数字中的尾随零 它应该返回以下结果 0 0002300 gt 0 00023 10 002300 gt 10 0023 100 0 gt 100 1000 gt 1000 0 0 gt 0 0 gt 0
  • Rails 的 Puma Systemd 配置不起作用

    我已经完成了一个使用 Ruby on Rails 构建的应用程序 现在我想将其托管在 AWS 上的 EC2 实例上 我已经为其配置了服务器 并且正在使用pumaHTTP服务器作为应用服务器 在生产中启动应用程序总是需要我运行RAILS EN
  • 使用pluginaweek的state_machine,我可以在事件期间引用activerecord对象吗?

    我正在尝试实现一个 挂起 事件 将对象转换为 挂起状态 但我需要能够 取消暂停 并返回到之前的状态 我向模型添加了 previous state 字段 但我看不到如何在事件块内访问它 这是我试图实现的基本逻辑 event suspend d
  • 运行 rake db:create 时出错:类“Singleton”的未定义方法“extend_object”

    当我跑步时rake db create在我的项目中我收到此错误 NameError undefined method extend object for class Singleton Did you mean extended 这个项目曾
  • 如何编写运行 Rails db:migrate 任务的 rake 任务?

    我想运行 db migrate VERSION 0 然后在我自己的 rake 任务中运行 db migrate 我对如何做到这一点感到困惑 我需要特殊的要求声明吗 我的 rake 任务将驻留在 Rails 应用程序的 lib tasks 目
  • Rails 3.2 开发模式不显示带有回溯等的完整错误页面

    我刚刚升级到 Rails 3 2 一切正常 除了错误页面不再显示正常的开发调试信息 相反 它显示标准生产错误页面 白色背景 中间有红色文本 很抱歉 出了点问题 我们已收到有关此问题的通知 我们会尽快查看 Rails 3 2 是否有新的设置或
  • 选择标签,指定所选选项(或将数组元素移动到索引 0)

    假设我正在查询水果列表 然后仅将水果的 ID 和名称收集到 fruit 中 32 apple 8 bannana 10 cantelope 11 grape 15 orange 41 peach 22 watermelon fruit 正在
  • 不同金额的 Stripe 订阅计划

    我正在为一家慈善机构制作一份捐赠表格 他们要求提供每月捐赠计划 用户可以选择他们想要捐赠的任何金额 我知道我可以制定个人计划 即 如果他们说每月捐款 5 美元 10 美元或 20 美元 我可以制定三个不同的计划并向用户订阅它们 有没有办法避
  • 使用旧的 ruby​​gems 版本进行捆绑安装

    我遇到的问题似乎与1个月前的问题 https stackoverflow com questions 38279896 rubygems 2 0 14 is not threadsafe bunder install message whe
  • Guard 不会加载 WDM

    我正在学习 Michael Hartl 的 Rails 教程 到目前为止该教程非常出色 我在高级设置一章中 他以有利于 TDD 的方式配置 Rails 环境 我安装了 Guard 并且通过运行我在 spec 文件夹中的测试 它一直正常运行
  • 通过名称查找进程ID

    如何在 Ruby 中通过名称或完整命令行找到 pid 而不调用外部可执行文件 我正在将 SIGUSR2 发送到命令行包含的进程ruby job rb 我想在不打电话的情况下执行以下操作pgrep uid Process uid pid pg
  • 在 Rails 中实现多个字段的自动完成

    我有一个应用程序 它实现了群组功能 每个小组有n名成员 此外 每个组都有一个组特定的个人资料图片 我已经能够实现组功能的自动完成 仅记住组名称 我已经参考了以下教程 http railsforum com viewtopic php id
  • 指定的 sqlite3 gem 未加载

    虽然我对 Ruby on Rails 比较陌生 但我开发应用程序已经有一段时间了 我似乎遇到的问题是 当我创建一个新的 Rails 应用程序 本地 使用 c9 时 当我启动 apache 服务器时 我似乎收到此错误 Specified sq
  • 如何找到查询结果的大小

    我在 Rails 中有以下查询 records Record select y id source where source gt source y id gt y id group y id source having count 1 如
  • 我在 apache 中使用乘客 for Rails 时收到 403 错误

    我已经安装了所需的工具 并遵循了几个教程 试图让乘客做出回应 我可以访问公共文件夹 public 500 html 或 422 hml 中的静态文件 昨天我通过虚拟主机进入 发现一些乘客错误 但一段时间后 托管重新启动了服务 从那时起我就无

随机推荐

  • OFFSET 命令附近的语法不正确

    为什么这不起作用并给我一个 偏移命令附近的语法不正确 错误 SELECT o orderdate o orderid o empid o custid FROM Sales Orders o ORDER BY o orderdate o o
  • 实时绘制 pandas 数据框

    我是新来的matplotlib并尝试显示我通过函数 read API 从 api 下载的三个变量的最后一小时数据的实时图 数据位于带有 DateTimeIndex 的 pandas 数据框中 例如 In dframe head Out A
  • 如何获取ContainerRequest中的会话对象可以使用注释@RolesAllowed(Role_user)?

    我正在使用 App Engine 和 Jersey 构建一个应用程序 我想使用注释 RolesAllowed Role user 谁允许在请求中创建过滤器 问题是我们需要配置类SecurityContextFilter 我的目标是获得id存
  • 编译 Lua - 创建 .so 文件?

    我正在 Centos 6 5 上编译 Lua 5 2 3 编译 安装工作正常 但是 我还需要编译另一个程序的开发库 我通常会通过这样做来安装它们 yum install lua devel 问题是安装 Lua 5 1 共享库 而不是 5 2
  • 是否可以在android的上下文菜单(系统菜单)中添加一些项目

    当我输入一些文本并按住它时 上下文菜单会显示剪切 复制 选择文本等项目 有什么方法可以将我自己的自定义项目添加到此上下文菜单中吗 我不知道这件事是如何工作的 但我想应该可以在清单中注册一些东西 就像注册活动和广播一样 Thanks 欢迎任何
  • Android 房间@Relation 左加入

    假设我有两个实体 问题和答案 它们具有一对多关系 每个问题可能有 0 n 个答案 它们定义为 Entity tableName questions data class Question PrimaryKey val id Long val
  • 在 qt linux 中保存配置

    我为Linux编写了一个qt应用程序 该应用程序应该在启动时运行 我 用桌面条目做的 但我需要它更复杂 用户应该检查一个复选框 以便选择应用程序是否在启动时运行 我该如何保存他的偏好 该应用程序之前是为 Windows 编写的 并且保存在注
  • 如何更改 AlertDialog 的主题

    我想知道是否有人可以帮助我 我正在尝试创建一个自定义的 AlertDialog 为了做到这一点 我在 styles xml 中添加了以下代码行
  • 创建一个圆形的 Java Swing JFrame?

    如果可能的话如何制作一个圆形的JFrame Oracle 有一个关于这个主题的很好的教程 https docs oracle com javase tutorial uiswing misc trans shape windows html
  • 如何在 Play 2.0 (Scala) 中使用 DATABSE_URL 进行与 PostgreSQL 9.1 和 Heroku 的本地连接?

    我使用 Play 在 OSX Lion 10 7 4 上使用本地 PostgreSQL 9 1 开发了第一个 Web 应用程序 框架2 0 3 我从conf application conf 相对于应用程序目录 中定义的数据库连接开始 db
  • 如何在Windows下使用特定的server.xml启动Tomcat?

    有时我想使用特殊配置启动 Tomcat 6 而不是使用 server xml 所以我创建了另一个名为的 xml 文件server test xml 现在我想告诉tomcat使用这个配置 这是怎么做到的 我在网上搜索几乎找不到任何东西 只有这
  • R:向 Plotly 添加搜索栏

    我在这里找到了这个 stackoverflow 帖子 从浏览器中突出显示 查找散点图中的数据点 https stackoverflow com questions 42507096 highlight find data points in
  • C++ 作为标准是否禁止在各个类实例中存储成员函数?

    在 C 实现中 通常代码不存储 以任何形式 在类实例内 代码段与对象等不在同一内存空间 这意味着成员函数不会 存储 在类实例内部 但当有人问了一个问题 https stackoverflow com q 21316374 560648对此
  • 为什么 True 和 False 在 Python 3 中改为关键字

    在Python 2中 我们可以重新分配True and False 但不是None 但所有三个 True False and None 被视为内置变量 然而 在 Py3k 中 这三个都被更改为关键字the docs http docs py
  • 将 HTML 代码转换为纯文本

    我有一个像这样的字符串 Col acute gio 我怎样才能将其转换为 Col gio 无需替换所有 html 代码 System Web HttpUtility HtmlDecode Col acute gio
  • 使用 NEST 搜索 elasticsearch 索引没有结果

    我正在使用 NEST 并且向 ES 索引添加内容没有任何问题 然而 获得任何结果是另一回事 这是我的浏览器中的输出 nest testing search pretty took 0 timed out false shards total
  • 不可变位图比可变位图更快吗?

    The Bitmap class has http developer android com reference android graphics Bitmap html copy 28android graphics Bitmap Co
  • NSDateFormatter 返回意外结果

    为什么以下 iOS 4 2 代码返回两个不同的时间 NSTimeZone gmt NSTimeZone timeZoneWithAbbreviation GMT NSDateFormatter dateFormatter NSDateFor
  • Vaadin 将 JavaScript 流转至 Java 调用

    按照本教程进行操作https vaadin com blog calling java from javascript https vaadin com blog calling java from javascript我试图从 javas
  • omn​​iauth 和电子邮件密码注册最佳实践是什么?

    结合 Facebook 登录 假设我将使用 Omniauth gem 和电子邮件 密码登录的最佳实践是什么 我看了一些博客 看了 Railscasts 我知道每个人都在使用 Devise gem 和 Omniauth 但我正在寻找一些不同的