NestJs アプリケーションは私にこれを与えています._verify は、カスタム パスポート戦略を実装しようとするときの関数ではありません。
ネストのドキュメントに従ってガイドラインに従いましたが、実装で何か問題があるかどうかを知りたいです。Local および JWT 戦略を実装することはできましたが、これを実装することはできませんでした。
以下はエラー スタックです。
[Nest] 508 - 02/12/2022, 1:52:39 PM ERROR [ExceptionsHandler] this._verify is not a function
TypeError: this._verify is not a function
at LocalStratergy.Strategy.authenticate (D:\projects\capp\node_modules\passport-custom\lib\strategy.js:60:8)
at attempt (D:\projects\capp\node_modules\passport\lib\middleware\authenticate.js:369:16)
at authenticate (D:\projects\capp\node_modules\passport\lib\middleware\authenticate.js:370:7)
at D:\projects\capp\node_modules\@nestjs\passport\dist\auth.guard.js:91:3
at new Promise (<anonymous>)
at D:\projects\capp\node_modules\@nestjs\passport\dist\auth.guard.js:83:83
at LocalAuthGuard.<anonymous> (D:\projects\capp\node_modules\@nestjs\passport\dist\auth.guard.js:49:36)
at Generator.next (<anonymous>)
at fulfilled (D:\projects\capp\node_modules\@nestjs\passport\dist\auth.guard.js:17:58)
at runMicrotasks (<anonymous>)
以下は、カスタム戦略コードです。
import { Injectable } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { Strategy } from 'passport-custom';
@Injectable()
export class CustomStratergy extends PassportStrategy(Strategy) {
async validate(req: Request): Promise<any> {
const valid = true;
if (!valid) throw new UnauthorizedException();
return true;
}
}
これは、NestJS アプリケーションに登録する方法です。
import { Module } from '@nestjs/common';
import { AuthService } from './auth.service';
import { AuthController } from './auth.controller';
import { UserModule } from '../user/user.module';
import { PassportModule } from '@nestjs/passport';
import { CustomStratergy } from './stratergies/custom.stratergy';
import { JwtModule } from '@nestjs/jwt';
import { JwtStratergy } from './stratergies/jwt.stratergy';
@Module({
imports: [
UserModule,
PassportModule,
JwtModule.register({
secret: 'secret',
signOptions: { expiresIn: '1d' },
}),
],
providers: [AuthService, CustomStratergy, JwtStratergy],
controllers: [AuthController],
exports: [AuthService],
})
export class AuthModule {}
また、AuthGuard:
import { Injectable } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
@Injectable()
export class CustomAuthGuard extends AuthGuard('custom') {}
SOに関する他の同様のエラー記事を調べましたが、それらに従ってもエラーを解決できませんでした。誰かがそれを助けることができれば、それは大歓迎です、ありがとう!!