最近,我继续再次完成我的项目。今天,我编写了背景登录并注册,然后使用传统令牌登录!
请参阅此文档:
安全性(Nestjs.cn)
英语版本实际上是不了解的,互联网都是第二手中的知识。感谢添加砖块的大家伙!
强烈建议阅读文档!
以下是上面的简单绘图图片。这些细节中的一些是由我保存的,这大致是这样的:
客户端完成了前端页面的检查后,客户端发送了将帐户密码运送到后端的请求。接收后端后,转到数据库检查用户。如果存在现有,前端可以将令牌放在需要验证用户信息的API的请求标题中。当用户请求需要验证用户信息的API时,API首先解析了令牌,其中包括验证令牌,有效性周期等的合法性,等等。分析后,将恢复原始信息。获得用户信息后,您可以用作操作数据库中用户的条件。
其中,私钥在后端,后端通过私钥和负载产生令牌。验证时通过私钥和令牌解析后端。
一些模块为乏味的验证过程提供了优雅的解决方案。在中国,我们可以通过文档简化过程。该模块可以自定义实现自定义验证的策略,例如在设计模式下的模板,例如设计现代模型中的模板,已经编写了一些方法,您可以选择性地覆盖。
首先,将块分开,验证权限并简单地获取用户信息。这两个部分应放在不同的模块中,而不是用户写的大脑,因此我分别拔出了Auth。
这是我的目录结构:
在输入控制层之前,将接口添加到控制层中,可以直接获得一些插件来验证用户信息。
在中间,在创建令牌,简单和直接的情况下返回该方法,此处的依赖项被注入
在中间,注入模块取决于
在中国,我们需要验证用户信息的合法性,这是用于验证用户信息的策略。
为了使策略生效,我们需要添加
这样,编写了登录接口。如果密码正确,它将返回令牌和简短的用户信息:
例如,之前的接口:
使用路线守卫,这是一种策略。该策略已经意识到了令牌的验证和分析。如果有错误,它将直接返回异常,我们不需要编写验证逻辑。
同样,添加到路由警卫中,在:
这样,JWT的操作就完成了
当我看到它时,这可能很尴尬。如果直接写作不是那么多,我必须说这是一个框架。它被迫让我用洋葱皮和模块化方式编写业务代码。我使用了一些迅速开发JWT验证的模块。我基本上可以说,我不需要关心令牌的处理逻辑。简而言之,体验很棒。除了一点眼睛,请来回查找文件。
原始:https://juejin.cn/post/709963967871033380
