你的-轻微但严重的-错误存在于
secretOrKey
您用于签名令牌的值。你有不同的价值观
src/auth/jwt.strategy.ts
和
src/auth/auth.service.ts
.
在
源代码/auth/auth.service.ts
:
而不是这个:
async createToken() {
const user: UserDto = { name: 'shamnad', phoneNumber: '12435' };
return jwt.sign(user, 'secretkey'); // <== /!\ focus on this one /!\
}
使用此:
async createToken() {
const user: UserDto = { name: 'shamnad', phoneNumber: '12435' };
return jwt.sign(user, 'secretKey'); // <== /!\ focus on this one /!\
}
因为你用
secretKey
签署你的令牌,而不是
secretkey
(注意骆驼的情况):
constructor(private readonly authService: AuthService) {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: 'secretKey', // <== /!\ focus on this line /!\
});
}
为了避免这种问题,我建议你使用
process.env.<your-variable>
而不是直接在字符串中手动设置配置。
里面看起来像这样
src/auth/jwt.strategy.ts网站
:
constructor(private readonly authService: AuthService) {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: process.env.SECRET
});
}
而在
源代码/auth/auth.service.ts
,如下所示:
async createToken() {
const user: UserDto = { name: 'shamnad', phoneNumber: '12435' };
return jwt.sign(user, process.env.SECRET); // <== /!\ focus on this one /!\
}
最后,要设置环境变量,请基于操作系统执行以下命令:
-Mac操作系统:
export SECRET=<your-secret-key>
-窗口:
set SECRET=<your-secret-key>
希望能有所帮助;)