首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

精通 MEAN 使用 OAuth 和 Passport 管理身份验证(1)

精通 MEAN 使用 OAuth 和 Passport 管理身份验证(1)

创建一个新用户帐户通过单击 Sign up 按钮(如图 1 所示),您应用程序的用户可创建一个存储在 MongoDB                本地的新帐户。此功能构建于您的应用程序中 — 不需要额外的编程。
图 1. UGLI 注册页面关于本系列在使用开源软件构建专业网站方面,新兴的 MEAN(MongoDB、Express、AngularJS、Node.js)堆栈对一直以来广受欢迎的                    LAMP 堆栈形成了巨大冲击。MEAN 代表架构和思维模型的一次重要转变 — 从关系数据库转变为 NoSQL,以及从服务器端                    Model-View-Controller 转变为客户端单页面应用程序。在此文章系列中,我们将了解 MEAN                    堆栈技术如何相互补充,以及如何使用它创建面向 21 世纪的现代化的全堆栈 JavaScript Web 应用程序。

这种默认行为显然从开发角度讲是最简单的解决方案,但它从用户体验角度将它还需要一些东西。您的用户组成员已在 Meetup.com                上拥有一个帐户,他们使用该帐户来对即将举办的会议执行 RSVP。要求他们创建和维护一个重复的凭据集合不仅让人厌烦 — 还公然违反了                “不要重复自己 (DRY) “ 的原则。
身份验证与授权只要登录到一个网站,就会发生两件稍微不同但相关的事情:
  • 通过提供一个用户名和密码(或一个指纹,或视网膜扫描,或……),您就可以对自己进行身份验证—                        通过共享一个秘密密码或一个惟一标识符,证明您就是您声称的那个人。没有身份验证,任何人都可登录到您的银行网站取钱,或者登录到您的社交媒体帐户,在您的游戏中发表煽动性言论。
  • 经过身份验证后,系统会确定您有权                        执行哪些操作。您的银行网站授权您在您的帐户中存钱和取钱,但很可能它不允许您调整利率或撤销银行手续费。要执行这些类型的操作,您必须联系一位客户服务代表,这位代表的帐户要有权执行管理任务。

幸运的是,借助您使用的 MEAN 堆栈,您可以设置一个使用 OAuth 和 Passport                的分布式身份验证和授权。简单地讲,您的用户可使用他们登录到 Meetup.com 所用的凭据来登录(执行验证)到 UGLI                应用程序。但没有用户的权限,就无法实现此目的;他们必须允许(授权)UGLI 应用程序使用其 Meetup.com 凭据。
在 UGLI 应用程序通过 OAuth 授权后,用户凭据不会与授权的应用程序共享。您不会在 UGLI 本地存储一组重复的用户名和密码。希望被授权                (UGLI) 的应用程序将用户重定向到 OAuth 提供商                (Meetup.com),他们在这里提供其凭据(用户名和密码)。用户成功执行身份验证后,会将一个访问令牌返回给授权的应用程序。
此模式在应用程序中消除了大量代码和逻辑。您不必再担心会将加密的密码存储在您的服务器上 — 这现在是 OAuth                提供商要处理的问题。类似地,您不必在编写算法来执行强密码,或者处理忘记密码的问题,或者强制用户定期更改其密码。
所以,OAuth 为用户提供了更少的要记住的密码,显著减少了您要编写的代码。如果这还不是一种双赢方案的教科书式定义,我不知道该怎么称呼它了。
返回列表