NestJS 守卫-校验权限
NestJS 中的组件有:中间件、守卫、拦截器、管道、拦截器(还有个过滤器
权限功能以守卫组件承载
【Step1:创建 auth.guard.ts】
@Injectable()
export class AuthGuard implements CanActivate {
canActivate(context) {
const request = context.switchToHttp().getRequest();
return validateRequest(request); // 校验函数
}
}
function validateRequest(request: Request): boolean {
const headers = request.headers;
if (
headers?.authorization !== process.env.CHECK_AUTH &&
request.method === 'POST'
) {
throw new UnauthorizedException('达咩!你没有权限操作哦!');
}
return true;
}
【Step2:只限制 POST 请求需要校验权限】 - 在控制器中使用 @UseGuards
// ltns.controller.ts
@Controller('api/ltn')
export class LtnController {
constructor(private readonly ltnService: LtnService) {}
@Post('add')
@UseGuards(AuthGuard)
add(@Body() data) {
return this.ltnService.addLtn(data);
}
}