0

我正在尝试使用 .env 来读取 JWT 机密并验证我的令牌。

我的课此时正在加载 .env 并读取值,之后我可以创建一个令牌:

export default class AuthMiddleware {
  constructor() {
  }

  private async getJWTSecret(): Promise<string> {
    await dotenvSafe.config();
    let JWTSecret = await process.env.JWT_SECRET || "g&n&r1c5&cre7";
    return JWTSecret;
  }

  public async createJWTToken(user: UserModel): Promise<any> {
    const JWTSecret = await this.getJWTSecret();
    let payloadJWTToken: {};
    payloadJWTToken = { userId: user.id, role: "GENERIC", iss: "My Company", iat: 1516239022, aud: "https://www.mycompany.com.br/"};
    let JWTToken = jwt.sign(payloadJWTToken, JWTSecret);
    return JWTToken;
  }
}

现在我添加了验证令牌的方法,我正在尝试以相同的方式读取 .env:

public async checkJWTToken(req: Request, res: Response, next: NextFunction): Promise<any> {
    const JWKtokenInRequestHeader = <string>req.headers["authorization"];

    try {
      this.getJWTSecret().then(secret => console.log(`Secret: ${secret}`))
      .catch(error => console.log(`An error has occurred: ${error}`));

    } catch (erro) {
      console.log(`Error message: ${erro}`);
    }

    next();
}

但是我收到了这个错误信息:

Error message: TypeError: Cannot read property 'getJWTSecret' of undefined

我无法理解为什么我用另一种方法以同样的方式阅读这个 .env 并且它工作得很好,但现在不工作了。

一些小费?

4

0 回答 0