![](/img/trans.png)
[英]Custom Login form in a Rails app with third party Oauth authentication webservice
[英]Authentication: Custom or Third Party
我正在Ruby on Rails中创建一个应用程序,并研究了Devise,Omniauth,并创建了自己的自定义版本。
我的问题是:您将在哪种情况下使用以上三种选择之一?
我的看法:-Omniauth可以通过第三方API提供快速注册,但是需要额外的权限才能访问其他数据-Devise提供了核心功能,也可以根据应用程序的需求进行自定义-自定义可能适用于极端情况,目前,我不需要
**我倾向于Devise,因为它提供了核心,并允许我添加到其中
其他注意事项:-我的应用程序需要登录并访问以下基本信息:位置,语言I18n等-我的应用程序还进行金融交易(如果您是付费会员等)。
回到我的问题:基于以上所述,Devise似乎是更好的选择吗? Omniauth是否提供这些功能? 我什么时候应该使用另一个?
谢谢
Devise和Omniauth做的事情非常不同-它们经常一起使用。
Devise提供了具有视图,控制器和路由的完整身份验证包,以允许用户注册,编辑用户配置文件,重置密码等。无需数据库身份验证模块通过电子邮件密码进行注册,就可以使用Devise。
Omniauth是用于通过Oauth进行身份验证用户的框架。 与Devise不同,Omniauth不附带任何视图或控制器。 相反,您需要将Oauth回调集成到您的应用中。 Omniauth所做的是抽象出不同提供程序之间的差异。
两者都可以一起使用,以通过例如密码或oauth提供用户身份验证。
通常不建议使用自己的身份验证解决方案 。 像Devise这样的项目有数百甚至不是数千个工时,而且很多人在查看代码库中的缺陷。 Syndrom是最常见的安全故障之一,它导致用户数据和密码泄漏,这是最常见的安全故障之一。
要将上下文添加到@max
的答案中,OmniAuth是OAuth(开放式授权)的提取...
OAuth是一种发布受保护数据并与之交互的简单方法。 这也是人们向您提供访问权限的一种更安全,更安全的方式。 我们一直很简单,以节省您的时间。
每当您拥有Facebook
, Twitter
, LinkedIn
, GitHub
, NetFlix
等受信任的服务,并希望将这些服务与这些现有服务上的预构建连接功能结合使用时,您将需要一种安全的方式来“授权”该数据的使用...
LinkedIn
“导入”联系人 Facebook
朋友 NetFlix
上观看的内容推荐新电影 大多数人通过Facebook
等的“允许访问”通知了解OAuth
:
在您自己的应用中解释这一点很简单-您是否要从Facebook
/ Twitter
/ LinkedIn
/ GitHub
等提取数据?
OAuth的真正用途应该是扩展您的应用程序。
大多数用户将其社交网络数据的“应用程序请求”视为“社交”体验的扩展(即,如果我允许app
访问我的FB
,我希望它可以发布到我的墙等)。
与其将其视为允许用户使用Twitter
/ Facebook
/ LinkedIn
凭据(100%有效)登录的方式,不如考虑更高级别的功能。
-
Devise是一个认证系统; OAuth是授权 。
OmniAuth
扩展了OAuth
的身份验证功能:
OmniAuth是一个库,用于标准化Web应用程序的多提供商身份验证。
它用Twitter API key
替换email
/ password
。 因此,只要你的系统上创建的认证,你将永远需要存储User
数据等-这是这些数据是如何认证,这使得差别。
简而言之, 如果您想Sign in with Twitter
按钮等Sign in with Twitter
建议使用OmniAuth
。 但是,为了保持身份验证的一致性, 最好将Devise
与 OmniAuth结合使用 。
-
最后, 除非您已实施Devise
至少5次, 否则请不要进行自己的身份验证。 所有Rails身份验证的工作方式相似(使用Warden
策略 )。 当Devise
有100,000个用户为您工作时,调试您自己的系统将不值得您花时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.