我正在尝试使用.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,并且效果很好,但现在不起作用。
一些提示?