我正在尝试为使用 PassportJS 在 NestJS API 上更改密码的用户重置/更改令牌 (JWT)。这是此授权如何工作的一个简洁示例:https ://docs.nestjs.com/security/authentication 。
我想在密码更改时生成一个新令牌,以确保在用户登录的每台设备上,在密码更改后,他们将获得未经授权并因此注销。
这就是我在用户服务中处理密码更改的方式:
async changePassword(uId: string, password: any) {
return await this.userRepository.createQueryBuilder()
.update(User)
.set({ password: await bcrypt.hash(password.value, 10) })
.where("userId = :userId", { userId: uId })
.execute();
}
我认为没有预构建方法可以做到这一点。JwtService 只有 5 个方法:decode
, sign
(这个是用来生成令牌的), signAsync
,verify
和verifyAsync
.
那么我该如何正确地做到这一点呢?