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();