了解 Nodejs 和 Angular 中的密码重置

Posted

技术标签:

【中文标题】了解 Nodejs 和 Angular 中的密码重置【英文标题】:Understanding password reset in Nodejs and Angular 【发布时间】:2017-07-29 09:03:30 【问题描述】:

我正在尝试了解如何使用 AngularJS (1.x) 和 Nodejs 后端来实现密码重置/忘记实现。我在 Nodejs 的后端阅读了这个great post。然后,我阅读了与 Angular 和 UI 路由器相关的 SO post。然后我阅读了这个SO post,再次与 Angular 相关并且忘记了密码。

代币

我知道 Angular 中的身份验证,它处理令牌。似乎有两种主要的方法来创建令牌,JWTpassport-jwt。一个比另一个好?

感到困惑

密码重置和忘记功能,据我所读(并希望能理解),大部分是在服务器端执行的,在客户端只做了一点点(什么是一点点?)。

当涉及到密码重置和忘记时,客户端究竟执行了什么操作? /将AngularJS 在这两个特性中扮演什么角色?是否有可能以某种方式为这 2 个功能集成 AngularJS?

【问题讨论】:

【参考方案1】:

我知道 Angular 中的身份验证,它处理令牌。它似乎 有两种创建令牌的主要方法,JWT 和 passport-jwt。是 一个比另一个好?

这里的人们肯定会解析您对“更好”一词的使用,因为它是一个高度主观的术语。无论哪种方式,根据我的经验,最好的实现通常是最简单的。当我需要连接一些简单的身份验证时,我喜欢使用jwt-simple,并且倾向于认为护照可能是矫枉过正。使用 JSON Web 令牌实现身份验证时,最重要的是理解其背后的一般概念。一开始可能会有点混乱,但是一旦你“理解”了它,它就真的很简单了。

当涉及到密码时,客户端究竟执行了什么 重置并忘记?

在客户端,旧的 JSON Web 令牌(带有旧的/忘记的密码)需要被删除并替换为新的。

AngularJS 在这两个特性中扮演什么角色?是吗 是否可以为这 2 个功能集成 AngularJS?

所有 Angularjs——实际上,任何前端代码——在这个过程中处理的是前端 JSON Web Token 的替换。

【讨论】:

感谢您的快速回复!只要我将令牌包含为 url 参数(即 reset/:token),我还能使用 AngularJS 来呈现这些路由的视图(重置并忘记)吗? 你绝对可以使用 angular 来处理这些东西。尽管可以说您可以将令牌放入 URL,但您也可以使用 Angular $http.interceptor,将其添加到请求标头中,甚至只是将其添加到请求有效负载中。您可以这样,当视图的控制器被实例化时,它会立即向服务器发出请求以获取信息。 没问题。在尝试实现它们之前,我不能强调首先了解 json webtokens 的工作原理。它会让你的生活更轻松。 是的,感谢您提供有关如何操作的建议。现在就这样做。 "这个过程中的句柄是前端 JSON Web Token 的替换" - 有链接吗?

以上是关于了解 Nodejs 和 Angular 中的密码重置的主要内容,如果未能解决你的问题,请参考以下文章

Angular 和 NodeJS 中的路由问题 [angular]

如何在没有用户名/密码的nodejs中创建JWT用户/访问令牌?

Angular 2 Universal 中的身份验证,nodejs

在后端使用NodeJS的Put方法不更新Angular7中的MongoDB

从 Angular/NodeJS/ExpressJS 向 3rd 方 URL 的 POST 请求

利用angular4和nodejs-express构建一个简单的网站—用户注册之ReactiveForm