Nodejs nestjs 在本地开发时,禁用认证服务?
Nodejs nestjs 在本地开发时,禁用认证服务?
项目中,使用 @nestjs/passport,用 dotenv 可读到 env 文件中当前环境,那如何在开发时,禁用认证?
4 回复
你判断下环境,跳过认证不就好了。
之前做授权的流程,有兴趣可以看一下,最后一步去掉路由守卫就行,或者你直接分离两套借口,有子项目模式。PS:了解诶思路,注意版本,我记得不同版本 API 和装饰器写法都有差异。
https://jay-lin1110.gitee.io/readme/nestjs/guard-authentication.html
刚玩这个,搞不懂为什么要禁掉?
在本地开发Node.js应用时,使用NestJS框架可以通过多种方式来禁用认证服务。以下是一种常见的方法,通过配置环境变量来动态启用或禁用认证模块。
首先,在你的NestJS项目中,通常会有一个认证模块(例如AuthModule)。你可以在这个模块中检查环境变量来决定是否实际加载认证服务。
-
设置环境变量: 在你的项目根目录下创建一个
.env文件,并添加如下内容:NODE_ENV=development DISABLE_AUTH=true -
修改AuthModule: 在你的
AuthModule中,根据环境变量来决定是否提供认证服务。import { Module, Inject, ENV } from '[@nestjs](/user/nestjs)/common'; import * as dotenv from 'dotenv'; dotenv.config(); [@Module](/user/Module)({ providers: process.env.DISABLE_AUTH === 'true' ? [] : [AuthService, ...otherAuthProviders], controllers: process.env.DISABLE_AUTH === 'true' ? [] : [AuthController], exports: [AuthService], }) export class AuthModule {} -
使用配置服务: 你也可以使用NestJS的配置服务来读取环境变量,这样代码更加整洁。
import { ConfigService } from '[@nestjs](/user/nestjs)/config'; import { Module, Inject } from '[@nestjs](/user/nestjs)/common'; [@Module](/user/Module)({ providers: [ { provide: 'AUTH_PROVIDERS', useFactory: (configService: ConfigService) => { return configService.get<boolean>('DISABLE_AUTH') ? [] : [AuthService, ...otherAuthProviders]; }, inject: [ConfigService], }, ], // 其他配置... }) export class AuthModule {}
通过上述方法,你可以在本地开发时方便地禁用认证服务。

