欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

JWT认证

最编程 2024-07-28 10:52:22
...
import { Inject, Injectable, UnauthorizedException } from '@nestjs/common'; import { ConfigType } from '@nestjs/config'; import { PassportStrategy } from '@nestjs/passport'; import { ExtractJwt, Strategy } from 'passport-jwt'; import { CommonConfigRegister } from '../../config/registers/common.register'; import { JwtExtraPayload } from '../interfaces/jwt-extra-payload.interface'; import { JwtPayload } from '../interfaces/jwt-payload.interface'; @Injectable() export class JwtStrategy extends PassportStrategy(Strategy) { constructor( @Inject(CommonConfigRegister.KEY) private readonly commonConfig: ConfigType<typeof CommonConfigRegister> ) { super({ jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), ignoreExpiration: false, secretOrKey: commonConfig.jwtSecret }); } /** * jwt 验证 * @param payload jwt解析后的原始荷载 * @returns 需要的用户信息 */ validate(payload: JwtPayload & JwtExtraPayload): JwtPayload { if (payload.exp * 1000 < Date.now()) throw new UnauthorizedException(); return { uuid: payload.uuid, role: payload.role }; } }点击复制复制失败已复制