Ruby on rails 身份验证:自定义或第三方

Ruby on rails 身份验证:自定义或第三方,ruby-on-rails,ruby,devise,omniauth,Ruby On Rails,Ruby,Devise,Omniauth,我正在用RubyonRails创建一个应用程序,让research Desive、Omniauth创建我自己的自定义版本 我的问题是:在什么情况下,您会使用上述三种选择之一 我的看法: -Omniauth可以通过第三方API提供快速注册,但需要额外的权限才能访问额外的数据 -Desive提供了核心功能,也可以根据应用程序的需要进行定制 -自定义可能适用于目前我不需要的极端情况 **我倾向于Desive,因为它提供了核心,并允许我添加到这一点上 其他注意事项: -我的应用程序需要登录并访问以下基本

我正在用RubyonRails创建一个应用程序,让research Desive、Omniauth创建我自己的自定义版本

我的问题是:在什么情况下,您会使用上述三种选择之一

我的看法: -Omniauth可以通过第三方API提供快速注册,但需要额外的权限才能访问额外的数据 -Desive提供了核心功能,也可以根据应用程序的需要进行定制 -自定义可能适用于目前我不需要的极端情况

**我倾向于Desive,因为它提供了核心,并允许我添加到这一点上

其他注意事项: -我的应用程序需要登录并访问以下基本信息:位置、语言I18n等 -我的应用程序还进行金融交易(如果您是付费会员等)

回到我的问题:基于以上,Desive似乎是更好的选择吗?Omniauth是否提供这些功能?我应该在什么时候使用其中一种


谢谢

Desive和Omniauth做了非常不同的事情——它们经常一起使用

designe提供完整的身份验证包,其中包含视图、控制器和路由,允许用户注册、编辑用户配置文件、重置密码等。 Desive无需数据库认证模块即可使用,并提供通过电子邮件密码注册的功能

Omniauth是一个通过Oauth对用户进行身份验证的框架。Omniauth与Desive不同,它不附带任何视图或控制器。相反,您需要将Oauth回调集成到您的应用程序中。Omniauth所做的是抽象出不同提供者之间的差异

这两种方法可以一起使用,例如通过密码或oauth提供用户身份验证


滚动您自己的身份验证解决方案通常是不可取的。像Desive这样的项目有成百上千的工时,很多人都在关注代码库的缺陷。带有“Not Innovated Here Syndrome”的公司推出的蹩脚的家用授权解决方案是导致用户数据和密码泄露的最常见的安全故障之一。

Desive和Omniauth做了非常不同的事情——它们经常一起使用

designe提供完整的身份验证包,其中包含视图、控制器和路由,允许用户注册、编辑用户配置文件、重置密码等。 Desive无需数据库认证模块即可使用,并提供通过电子邮件密码注册的功能

Omniauth是一个通过Oauth对用户进行身份验证的框架。Omniauth与Desive不同,它不附带任何视图或控制器。相反,您需要将Oauth回调集成到您的应用程序中。Omniauth所做的是抽象出不同提供者之间的差异

这两种方法可以一起使用,例如通过密码或oauth提供用户身份验证


滚动您自己的身份验证解决方案通常是不可取的。像Desive这样的项目有成百上千的工时,很多人都在关注代码库的缺陷。非发明者综合征公司推出的蹩脚的家用认证解决方案是导致用户数据和密码泄露的最常见的安全故障之一。

为了给
@max
的答案添加上下文,OmniAuth是一种

OAuth是一种发布受保护数据并与之交互的简单方法。对人们来说,这也是一种更安全、更安全的访问方式。我们一直保持简单,以节省您的时间

每当您拥有一个受信任的服务,如
Facebook
Twitter
LinkedIn
GitHub
NetFlix
等,并且希望在这些现有服务上结合您的预建连接使用该服务时,您将需要一种安全的方式来“授权”使用该数据

  • “CRM”系统,允许您从
    LinkedIn
  • “社交发件人”系统,允许您向您的
    Facebook
    朋友发送消息
  • 根据您最近在NetFlix上观看的内容推荐新电影

大多数人通过
Facebook
等的“允许访问”通知知道
OAuth

在你自己的应用程序中解释这一点很简单-你想从
Facebook
/
Twitter
/
LinkedIn
/
GitHub
等获取数据吗

OAuth的真正用途应该是扩展应用程序

大多数用户将社交网络数据的“应用程序请求”视为“社交”体验的延伸(即,如果我允许
app
访问我的
FB
,我希望它能发布到我的墙上等)

与其将其视为允许用户使用
Twitter
/
Facebook
/
LinkedIn
凭据(100%有效)登录的方式,不如考虑更高级别的功能

--

设计OmniAuth 设计是一个认证系统;OAuth是授权

扩展用于身份验证的OAuth

OmniAuth是一个为web应用程序标准化多提供商身份验证的库

它将
电子邮件
/
密码
替换为
推特API密钥
。因此,无论何时在您的系统上创建身份验证,您都需要存储
用户
数据等-数据的身份验证方式才是关键

简而言之,如果您想
使用Twitter
按钮等登录,建议使用
OmniAuth
。但是,为了保持身份验证的一致性

--

最后,除非您至少实现了5次
design
,否则不要使用您自己的身份验证。所有Rails身份验证的工作方式都类似(使用)。