小米的前端记录 2024-03-26 22:49 采纳率: 0%
浏览 17

nestjs 验证token失效问题

https://blog.csdn.net/u014378628/article/details/134776666

你好,在这篇文章中,如果添加secret后,您程序的token失效验证还有效吗?

我有添加了一个配置项

如图:

img

我不清楚如果要这么写的话,那么JwtModule.register方法是做了什么处理?

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2024-03-26 22:51
    关注

    小米的前端记录 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    在这篇文章中,添加了一个配置项JwtModule.register,该方法是用于在NestJS应用中集成jsonwebtoken插件并进行相应的配置。

    解决方案:

    1. JwtModule.register方法的作用是配置jsonwebtoken插件的参数,包括secretexpiresIn。其中,secret是你自定义的秘钥,用于生成和验证token的签名,expiresIn是token的过期时间。

    2. 如果你在调用this.jwtService.sign生成token时,指定了secretexpiresIn,那么JwtModule中的配置项就不再起作用。因此,你可以将JwtModule.register注释掉或删除,直接在代码中指定秘钥和过期时间。

    修改后的代码示例:

    import { Injectable } from '@nestjs/common';
    import { JwtService } from '@nestjs/jwt';
    import { jwtConstants } from './constants';
    
    @Injectable()
    export class AuthService {
      constructor(private readonly jwtService: JwtService) {}
    
      async login(user: any) {
        const payload = { username: user.username, sub: user.userId };
        const token = this.jwtService.sign(payload, {
          secret: jwtConstants.secret,
          expiresIn: jwtConstants.expiresIn,
        });
        return { token };
      }
    }
    

    通过以上修改,你可以在生成token时指定自定义的秘钥和过期时间,而JwtModule中的配置项将不再起作用。当然,你也可以根据自己的需求保留JwtModule.register的配置项,同时在调用this.jwtService.sign生成token时传入相应的参数。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月26日