授权承载令牌?

时间:2019-01-09 18:03:46

标签: typescript authorization bearer-token nestjs

我正在使用承载授权,但是我不知道如何将标头auth发送到视图。

Auth.guard:

import { Injectable, CanActivate, ExecutionContext, HttpException, HttpStatus } from '@nestjs/common';
import * as jwt from 'jsonwebtoken';

@Injectable()
export class AuthGuard implements CanActivate {
  async canActivate(context: ExecutionContext): Promise<boolean> {
    const request = context.switchToHttp().getRequest();
    if(!request.headers.authorization){
    return false;
}
request.user = await this.validateToken(request.headers.authorization);    
return true;
}
  async validateToken(auth: string){
    if(auth.split(' ')[0] !== 'Bearer'){
        throw new HttpException('Invalid token', HttpStatus.FORBIDDEN);
    }const token= auth.split(' ')[1];
    try{
        const decoded = jwt.verify(token, process.env.SECRET);
        return decoded;
    }catch(err){
        const message = 'Token error: ' + (err.message || err.name);
        throw new HttpException(message, HttpStatus.FORBIDDEN);
    }
  }
}

Github repository

0 个答案:

没有答案