NestJS使用AuthGuard('local')报Unknown authentication strategy "local"错误如何解决?
问题解决方案
你遇到的Unknown authentication strategy "local"错误是以下几个常见配置遗漏导致的,按顺序排查即可:
1. 检查passport-local依赖是否安装
Nest的Passport本地策略依赖官方的passport-local包,很多开发者容易遗漏安装,执行以下命令安装依赖:
npm install passport-local npm install @types/passport-local -D
如果使用yarn则执行:
yarn add passport-local yarn add @types/passport-local -D
2. 根模块AppModule必须导入JwtAuthModule
你的LocalStrategy是注册在JwtAuthModule的providers列表中的,只有当JwtAuthModule被导入到根模块AppModule时,Nest才会实例化LocalStrategy,完成local策略的注册。同时你在AppController中注入了JwtAuthService,也需要导入JwtAuthModule才能正确注入该服务。
修改你的app.module.ts代码如下:
import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { JwtAuthModule } from './jwt-auth/jwt-auth.module'; @Module({ imports: [JwtAuthModule], // 新增这行导入认证模块 controllers: [AppController], }) export class AppModule {}
3. 可选验证项
如果完成上述两步后仍报错,检查以下两点:
- 确认
local.strategy.ts文件路径正确,没有拼写错误,确实被正确导入到JwtAuthModule的providers列表中 - 确认
PassportStrategy第二个参数的local字符串没有拼写错误,和AuthGuard('local')中传入的字符串完全一致
内容的提问来源于stack exchange,提问作者adhi narayan
相关产品推荐
相关产品推荐

