用户登录

在 Auth 模块里添加一个策略,新建一个文件,放在 strategies 目录的下面,文件的名字是 jwt.strategy.ts。

验证的策略是个类,这个类要用 @Injectable 装饰一下,export 一个 class,名字可以叫 JwtStrategy,它要继承一下 PassportStrategy ,它来自 @nestjs/passport 这个包。

PassportStrategy 需要一个 Strategy 参数,这个 Strategy 来自 passport-jwt 这个 package。

再回到 JwtStrategy ,在这个类里面要添加一个 constructor 构造方法,方法里得执行一下 super。

给它一个配置对象,这个配置对象里的一些选项决定了怎么从请求里提取 token 的值,还有怎么验证 token。

添加一个 jwtFromRequest 属性,它的值用一下 ExtractJwt.fromAuthHeaderAsBearerToken,意思就是从请求的 Authorization 头部里面提取 JWT 的值, 并且这个 Authorization 头部的值里面会带着一个 Bearer 空格,然后才是 JWT 的值。

再添加一个 secretOrKey 属性, 我们在签发 JWT 的时候用的是 Secret,所以这里也要填写对应的 Secret 的值。

打开 AuthModule,复制一下 JwtModule 里的 secretOrPrivateKey 的值,把它交给这里的 secretOrKey。

validate

在这个类里再添加一个验证方法,添加一个 async 方法,名字是 validate,JWT 这种策略,它的验证方法里面接收一个 payload 参数,它的类型是 JwtPayload,这个 payload 里面包含的就是从 JWT 里面解析出来的数据。

方法还有一个 done,它是一个 VerifiedCallback。

在这个 validate 方法里,暂时我们先把从 JWT 里解构出来的 payload 输出到控制台上检查一下。

打开 AuthModule ,把刚才创建的 JwtStrategy 放在模块的 providers 里面。

策略(Strategy)《 Nest.js 应用框架:身份验证 》

统计

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

社会化网络

关于

微信订阅号

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