nestjs中jwt认证成功后后续接口怎么获取jwt的payload

发布于 2022-09-12 22:46:21 字数 75 浏览 31 评论 0

看了很多博客每个都写的jwt的认证却没有写怎么获取payload中的内容
请教一下如何获取payload中的内容呢
help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北陌 2022-09-19 22:46:21

JWT是由三段信息构成的,每段之间用 “.” 分隔。第一部分是 token 描述信息,第三部分是加密的签证,中间部分就是载荷(payload)了。
第一部分和第二部分,都是一个简单的 JSON 对象,用 base64 编码,所以可以很简单的根据 “.” 把这个 jwt 分成三份,取出第二份,用 base64 解码,得到载荷 JSON。

喵星人汪星人 2022-09-19 22:46:21
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里

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文