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 };
}
}点击复制复制失败已复制
推荐阅读
-
认识什么是 CMMI 认证
-
ASPICE 认证实践中的常见问题和解决方案
-
V.Spring Boot 集成 Spring 安全认证流程 2
-
四、Spring Boot 集成 Spring Security 认证流程
-
如何快速获得 cnas 认证证书
-
认证技术的原理和应用
-
深入了解 Oracle OCP 认证,开启数据库专业之旅
-
OJ 在线评估系统 微服务 高级网关 跨域权限检查 集中式跨域问题解决 扩展 JWT 检查并实施接口限流降级
-
Java 安全认证和 Hadoop UGI 原理详解
-
利用 Spring Boot 与 Spring Security + JWT + MySQL 实现基于令牌的身份验证