typescript - uwierzytelnianie Nest.js z użyciem typeORM
Stworzyłem działający serwer z połączeniem z bazą danych, z prostym żądaniem get, które działa. Podążałem za tym przewodnikiem: https://docs.nestjs.com/techniques/authentication.
podczas uruchamiania serwera i próby wykonania żądania get z chronionej trasy, otrzymuję Cannot read property 'challenge' of undefined.
user.controller.ts
import { Controller, Get, UseGuards } from '@nestjs/common';
import { UserService } from './user.service';
import { User } from './user.entity';
import { AuthGuard, PassportModule } from '@nestjs/passport';
@Controller()
export class UserController {
constructor(
private readonly userService: UserService)
{}
@Get('user')
@UseGuards(AuthGuard())
findAll(): Promise<User[]> {
return this.userService.findAll();
}
@Get('users')
find(): Promise<User[]> {
return this.userService.findAll();
}
}
auth.module.ts
import { Module } from '@nestjs/common';
import { AuthService } from './auth.service';
import { HttpStrategy } from './http.strategy';
import { UserModule } from 'database/entities/user/user.module';
import { PassportModule } from '@nestjs/passport';
const passportModule = PassportModule.register({ defaultStrategy: 'bearer' });
@Module({
imports: [
passportModule,
UserModule],
providers: [AuthService, HttpStrategy],
exports: [passportModule],
})
export class AuthModule {}
również podczas uruchamiania serwera otrzymuję ostrzeżenie [AuthGuard] Aby używać "defaultStrategy", proszę upewnić się, że moduł PassportModule jest importowany w każdym miejscu, gdzie używany jest AuthGuard(). W przeciwnym razie, passport nie będzie działał poprawnie.