使用nestjs命令生成一个守卫文件

nest g gu auth

创建一个guards文件夹,将守卫文件移动进去

auth.guard.ts是通过返回true和false控制是否允许进入

然后我们在对象的module.ts文件providers中新增一个对象

{
   provide:APP_GUARD,
   //刚刚创建的守卫类
   useClass:AuthGuard
}

这样所有的请求就会进入到AuthGuard守卫中了,当然也可以在app.module.ts中新增。
这样我们就可以在AuthGuard中写逻辑进行权限鉴定了。
我们可以使用以下装饰器来进行设置,接口所需的角色权限

@SetMetadata("roles",["login"])

然后我们可以在AuthGuard中获取到值,进行权限验证
1.png

当然除了使用SetMetadata装饰器还可以使用命令来创建自定义装饰器。

nest g d role

创建完成后我们就可以将SetMetadata修改为自定义的装饰器了

@SetMetadata("roles",["login"])
//将上面的装饰器修改为
@Role("login")

在拦截器中一些常用的方法

//获取requset
context.switchToHttp().getRequest()
//获取response
context.switchToHttp().getResponse();

标签: nestjs

添加新评论