nestjs系列 - jwt 授权
type
status
date
slug
summary
tags
category
icon
password
😀
这里写文章的前言: 一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。
 
 
首先,我们需要安装@nestjs/jwt ,还要后面需要使用cookies
 
安装完成后,将 cookie-parser 中间件应用为全局中间件(例如,在你的 main.ts 文件中)。
 
依靠@nestjs/jwt,全局注入一个JwtService, 完成jwt的生成和解密
完成这一步后,我们可以在任何地方使用JwtService实例
接下来,就是生成jwt的处理啦
这里我提供了多种方法把token传递给前端,包括cookieAuthorization-headerbody等,前端按需实现token的保存。
 
 
校验Token权限
 
jwt已经生成,接下来就是对接口做权限校验的工作了。
设计初衷可以在controller 大类和内部接口方法下面都可以自由设定装饰器@Authorization
 
给接口全局的接口jwt拦截器AuthGuard
这里的this.reflector.getAllAndOverride是关键所在,使用获取@Authorization反射的roles数据,并且从cookieheaders.authorization 获取授权的用户身份role。两者比对判断是否合法,返回true代表校验正确。
 
设计Authorization
上面提到,AuthGuard 是提供反射获取Authorization的设定介绍。接下来,就是在Authorization实现这个反射的传递逻辑了
 
Done!
 
 

© ittat 2016-2025