Nestjs ( 四 ) 解析token 注入req res

552 阅读1分钟

前面获取到token 加入校验

此时需要从token中解析用户信息 CURD携带实现数据隔离

interceptor/request.ts

import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { jwtConstants } from "./../auth/constants";

@Injectable()
export class TokenGuard implements CanActivate {
    constructor(private readonly jwtService: JwtService) { }
    async canActivate(
        context: ExecutionContext,
    ): Promise<any> {
        const req = context.switchToHttp().getRequest();
        const token = req.headers.authorization.split(' ')[1];
        const user = await this.jwtService.verifyAsync(token, { secret: jwtConstants.secret })
        req.query.userId = user.userId
        req.body.userId = user.userId
        return true;
    }
}

使用 TokenGuard 将解析到的当前用户信息注入到req,res
  @UseGuards(AuthGuard("jwt"))
  @UseGuards(TokenGuard)
  

image.png