看了很多博客每个都写的jwt的认证却没有写怎么获取payload中的内容
请教一下如何获取payload中的内容呢
help
看了很多博客每个都写的jwt的认证却没有写怎么获取payload中的内容
请教一下如何获取payload中的内容呢
help
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const AuthUser = createParamDecorator(
(data: string, ctx: ExecutionContext) => {
const req = ctx.switchToHttp().getRequest();
const user = req.user;
return data ? user?.[data] : user;
});新建一个user.decorator.ts, 放入上面的代码,你可以把这个文件放到user module里
需要用的时候,像提取query参数那么样 @AuthUser('email') email: string
上面引号里的email,你替换成任意你放在payload里的东西,如果你想拿整个payload,就括号里面什么都不写,外面写个payload
这个方法只能用在校验jwt的api上,因为只有校验jwt,才会从payload里取值并放在req.user里
JWT是由三段信息构成的,每段之间用 “.” 分隔。第一部分是 token 描述信息,第三部分是加密的签证,中间部分就是载荷(payload)了。
第一部分和第二部分,都是一个简单的 JSON 对象,用 base64 编码,所以可以很简单的根据 “.” 把这个 jwt 分成三份,取出第二份,用 base64 解码,得到载荷 JSON。