Skip to main content

nest 中的 Guard

import { CanActivate, ExecutionContext, Injectable } from "@nestjs/common";

import { Observable } from "rxjs";

@Injectable()
export class DogsGuard implements CanActivate {
canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
const request = context.switchToHttp().getRequest();

// 获取 headers 对象

const headers = request.headers;

console.log(headers);

return true;
}
}

單一的使用

@UseGuards(AuthGuard)
@Controller()
export class AppController {
...
}
@Controller()
export class AppController {

@Get()
@UseGuards(AuthGuard)
findAll(){ ... }

...
}

global 的寫法

async function bootstrap() {
app.useGlobalGuards(new DogsGuard());
await app.listen(process.env.PORT);
}

bootstrap();