用户登录

我们需要一种方法让权限控制守卫知道要验证的权限到底是什么,可以使用 Nest 框架提供的 SetMetaData 装饰器,在方法上使用这个装饰器设置一些数据,在守卫那里可以得到这些数据 ..

定义

不过一般不直接使用这个 SetMetaData 装饰器,可以去创建一个自定义的装饰器让它返回特定的 meta 数据,在 core,decorators 里面,新建一个装饰器,名字是 permissions.decorator.ts,在这个文件里定义一个装饰器,export const Permissions,它是一个方法。

方法接收一组 permissions 参数,再设置一下参数的类型,可以去创建一个 Interface。

在 core,interfaces 里面,新建一个 permission.interface.ts。

在这个文件里导出一个接口,export interface,名字是 PermissionInterface,暂时只添加一个 role,类型是 UserRole 。

回到这个 Permission 装饰器的定义,permissions 的值的类型是一组 Partial 的 PermissionInterface。

这个方法用一下 SetMetadata,设置的 meta 数据的名字叫 permissions,对应的值就是 permissions 参数的值,也就是使用这个装饰器的时候提供的一组 permission 数据。

使用

找个地方可以使用一下这个装饰器,打开 user.controller ,这个控制器,找到它的 update 方法,在这个方法的上面,用一下 @Permissions 装饰器。

使用它的时候可以提供一组权限,一个对象,里面添加一个 role 属性,值设置成 UserRole.ADMIN 。

权限装饰器(Permissions)《 Nest.js 应用框架:权限控制 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点