1.简介
nest.js可以集成passport的认证,jwt可以作为一种passport认证策略实现
我们需要实现以下功能:
登录返回一个JWT token,token的有效载荷是用户信息,后续可以使用Bearer Token来进行访问
使用Bearer Token访问时,可以在Guard里解析token,将用户信息设置到req.user,如果jwt无效,抛出认证异常
AuthGuard注册为全局Guard,默认所有路由需要认证
自定义装饰器,设置元数据,用于标记路由不需要认证,并且在Guard里检查元数据,跳过认证
自定义装饰器,可以获取当前用户信息
自定义装饰器,设置元数据,标记访问路由需要的角色,并且在Guard里检查元数据,如果角色不符合,抛出未授权异常
2.安装
安装passport,因为使用jwt,所以不需要安装passport-local策略
$ npm install --save @nestjs/passport passport
安装jwt模块与passport-jwt策略“”
$ npm install --save @nestjs/jwt passport-jwt
$ npm install --save-dev @types/passport-jwt
3.实现