如何解决 Nestjs 中的“策略#authenticate 必须被子类覆盖”错误

Posted

技术标签:

【中文标题】如何解决 Nestjs 中的“策略#authenticate 必须被子类覆盖”错误【英文标题】:How can I solve "Strategy#authenticate must be overridden by subclass" error in Nestjs 【发布时间】:2020-10-31 12:01:30 【问题描述】:

我在向 auth/login 发出 POST 请求时收到此错误

[Nest] 8344   - 10/07/2020, 17:59:32   [ExceptionsHandler] Strategy#authenticate must be overridden by subclass +811577ms

错误:策略#authenticate 必须被子类覆盖 在 LocalStrategy.Strategy.authenticate (/home/damy/Projects/sn-ps/Typescript/simple-crud-with-nest/node_modules/passport-strategy/lib/strategy.js:21:9) 尝试(/home/damy/Projects/sn-ps/Typescript/simple-crud-with-nest/node_modules/passport/lib/middleware/authenticate.js:366:16) 在验证(/home/damy/Projects/sn-ps/Typescript/simple-crud-with-nest/node_modules/passport/lib/middleware/authenticate.js:367:7) 在/home/damy/Projects/sn-ps/Typescript/simple-crud-with-nest/node_modules/@nestjs/passport/dist/auth.guard.js:87:3 在新的承诺 () 在/home/damy/Projects/sn-ps/Typescript/simple-crud-with-nest/node_modules/@nestjs/passport/dist/auth.guard.js:79:83 在 MixinAuthGuard。 (/home/damy/Projects/sn-ps/Typescript/simple-crud-with-nest/node_modules/@nestjs/passport/dist/auth.guard.js:48:36) 在 Generator.next () 在/home/damy/Projects/sn-ps/Typescript/simple-crud-with-nest/node_modules/@nestjs/passport/dist/auth.guard.js:20:71 在新的 Promise ()

这是我的本地策略代码 nestjs local strategy code

【问题讨论】:

【参考方案1】:

您需要安装和使用passport-localpassport 是一个抽象实现,它的Strategy 是一个abstract 类,这意味着它不能直接运行。如果您改用passport-local,则该实现已经存在。

【讨论】:

这对我有用!如果你使用passport-jwt,你也可以从那里导入Strategy @DanielRodríguezMeza 从哪里导入? @MarcusChristiansen 喜欢这个import Strategy from 'passport-jwt'; 谢谢。解决了我的问题。我是从 'passport' 导入的

以上是关于如何解决 Nestjs 中的“策略#authenticate 必须被子类覆盖”错误的主要内容,如果未能解决你的问题,请参考以下文章

NestJS:解决 NestMiddleware 中的依赖关系?

如何在 NestJS 中热重载联邦网关

NestJS跨域问题

如何解决在 NestJs 应用程序中应该是 Injectable 类的未实例化属性?

NestJS - 如何自我引用 mongoDB 架构 @nestjs/mongoose?

如何使用 dto 验证 nestjs 中的对象数组