【发布时间】:2022-10-23 06:07:10
【问题描述】:
在我的服务器中实现 jwt 时出现此错误。我正在使用 NestJs,并且正在关注文档。我一直在寻找有关此错误的解决方案,但似乎没有任何效果。 我已经将密钥存储在我的 .env 文件中,在我的 app.module 中添加了 ConfigModule.forRoot(),这样我就可以成功读取我的所有环境变量。这是我的代码,如果有人能指出我正确的方向。
app.module.ts
@Module({
imports: [
ConfigModule.forRoot(),
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.DB_HOST,
port: +process.env.DB_PORT,
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
entities: ['dist/**/*.entity{.ts,.js}'],
synchronize: false,
}),
UsersModule,
AuthModule,
PolsModule,
],
controllers: [UsersController, AuthController, PolsController],
providers: [UsersService, AuthService, PolsService, JwtService],
})
export class AppModule {}
auth.module.ts
@Module({
imports: [
UsersModule,
PassportModule,
JwtModule.register({
secret: process.env.JWT_SECRET_KEY,
signOptions: { expiresIn: '4h' },
}),
],
providers: [AuthService, UsersService, LocalStrategy, JwtStrategy],
controllers: [AuthController],
})
export class AuthModule {}
身份验证控制器.ts
@Controller('auth')
export class AuthController {
constructor(
private authService: AuthService,
private usersService: UsersService,
) {}
@UseGuards(LocalAuthGuard)
@Post()
async login(@Request() req) {
return this.authService.login(req.user);
}
}
auth.service.ts
@Injectable()
export class AuthService {
constructor(
private usersService: UsersService,
private jwtService: JwtService,
) {}
async login(user: any) {
const payload = { username: user.username, sub: user.id };
console.log(process.env.JWT_SECRET_KEY);
return {
access_token: this.jwtService.sign(payload),
};
}
}
控制台错误
// console.log(process.env.JWT_SECRET_KEY)
fb8C47vylwS
[Nest] 50225 - 01/07/2022, 17:46:37 ERROR [ExceptionsHandler] secretOrPrivateKey must have a value
Error: secretOrPrivateKey must have a value
at Object.module.exports [as sign] (/Users/user/dev/backend/pol-api/node_modules/jsonwebtoken/sign.js:107:20)
at JwtService.sign (/Users/user/dev/backend/pol-api/node_modules/@nestjs/jwt/dist/jwt.service.js:28:20)
at AuthService.login (/Users/user/dev/backend/pol-api/src/auth/auth.service.ts:26:37)
at AuthController.login (/Users/user/dev/backend/pol-api/src/auth/auth.controller.ts:29:29)
at /Users/user/dev/backend/pol-api/node_modules/@nestjs/core/router/router-execution-context.js:38:29
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at /Users/user/dev/backend/pol-api/node_modules/@nestjs/core/router/router-execution-context.js:46:28
at /Users/user/dev/backend/pol-api/node_modules/@nestjs/core/router/router-proxy.js:9:17
正如我所说,我尝试了在其他类似问题中发现的不同潜在解决方案(如this one),但没有一个答案对我有用。
【问题讨论】:
标签: javascript jwt nest