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)。你可以在这个模块中检查环境变量来决定是否实际加载认证服务。

  1. 设置环境变量: 在你的项目根目录下创建一个.env文件,并添加如下内容:

    NODE_ENV=development
    DISABLE_AUTH=true
    
  2. 修改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 {}
    
  3. 使用配置服务: 你也可以使用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 {}
    

通过上述方法,你可以在本地开发时方便地禁用认证服务。

回到顶部