Ваша - небольшая, но критическая - ошибка содержится в значении secretOrKey
, которое вы используете для подписи своего токена.У вас есть разные значения между src/auth/jwt.strategy.ts
и src/auth/auth.service.ts
.
In src/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
});
}
и в src/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 OS: export SECRET=<your-secret-key>
- Windows: set SECRET=<your-secret-key>
Надеюсь, это поможет;)