我正在尝试使用 .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 并且它工作得很好,但现在不工作了。
一些小费?