
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传递给前端,包括
cookie
、Authorization-header
、body
等,前端按需实现token的保存。校验Token权限
jwt已经生成,接下来就是对接口做权限校验的工作了。
设计初衷可以在controller 大类和内部接口方法下面都可以自由设定装饰器
@Authorization
给接口全局的接口jwt拦截器AuthGuard
这里的
this.reflector.getAllAndOverride
是关键所在,使用获取@Authorization
反射的roles数据,并且从cookie
和headers.authorization
获取授权的用户身份role。两者比对判断是否合法,返回true
代表校验正确。设计Authorization
上面提到,AuthGuard 是提供反射获取
Authorization
的设定介绍。接下来,就是在Authorization实现这个反射的传递逻辑了Done!