nestjs 如何获取 存储在jwt中的用户信息

这个是我的jwt.strategy.ts

import { Injectable } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { ExtractJwt, Strategy } from 'passport-jwt';

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
  constructor() {
    super({
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      ignoreExpiration: false,
      secretOrKey: 'secretOrKey',
    });
  }

  async validate(payload: any) {
    return {
      userId: payload.userId,
    };
  }
}

但是有个小小的困惑,就是我一旦用户登录成功,我在调用别的接口时,怎么获取jwt token中的用户信息呢?

比如我有个getProfile接口,这个时候,我肯定需要知道存储在jwt token中的userId信息,我记得以前用Koa/jwt的时候,它会自动将jwt中存储的信息放到ctx.state.user中,但在nest里面似乎没有。

请问下,我怎么才能获取到这个userId呢.....

阅读 6.1k
1 个回答

在request.user里面获取

import {Req}  from '@nestjs/common'
import { Request } from 'express'

@Post()
create(@Req() request: Request) {
    console.log('user', request.user)
    return this.clockService.create(request);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题