Node.js 使用NestJS和Passport手动启动登录会话

Node.js 使用NestJS和Passport手动启动登录会话,node.js,nestjs,passport-saml,Node.js,Nestjs,Passport Saml,我正在寻找一种方法,以编程方式登录到一个假用户的开发目的。最终目标是我打开应用程序进行演示/开发,有一个假冒用户强行登录(这在生产中被关闭) 目前,我有3套中间件正在运行: express session-设置会话和会话存储提供程序 我编写的一些定制中间件只是将我的dev用户附加到req.session.user passport saml中间件,用于检查用户是否经过身份验证,如果未通过身份验证,则将其提交给SSO提供商 现在,我可以在1和3之间添加更多的中间件,并看到我的假用户正在会话中持久化

我正在寻找一种方法,以编程方式登录到一个假用户的开发目的。最终目标是我打开应用程序进行演示/开发,有一个假冒用户强行登录(这在生产中被关闭)

目前,我有3套中间件正在运行:

  • express session
    -设置会话和会话存储提供程序
  • 我编写的一些定制中间件只是将我的dev用户附加到
    req.session.user
  • passport saml
    中间件,用于检查用户是否经过身份验证,如果未通过身份验证,则将其提交给SSO提供商 现在,我可以在1和3之间添加更多的中间件,并看到我的假用户正在会话中持久化(至少在请求期间)。但是,显然我没有做
    passport saml
    中间件希望看到的事情,因为不管我在会话中设置了什么,它总是认为我未经身份验证,并将我重定向到SSO提供程序

    中间件的第一层(
    express session
    )如下所示:

    session({
      secret: config.get('SESSION_SECRET'),
      cookie: {
        maxAge: 1000 * 60 * 60 * 24 * 7,
      },
      store,
      resave: true,
      saveUninitialized: false,
    });
    
    (req: Request, _: Response, next: NextFunction): void => {
      req.session.user = adminUser;
    }
    
    中间件的第二层如下所示:

    session({
      secret: config.get('SESSION_SECRET'),
      cookie: {
        maxAge: 1000 * 60 * 60 * 24 * 7,
      },
      store,
      resave: true,
      saveUninitialized: false,
    });
    
    (req: Request, _: Response, next: NextFunction): void => {
      req.session.user = adminUser;
    }
    
    第三层中间件就是passport中间件

    我确实尝试在步骤2中调用
    req.logIn
    ,但我收到一条消息,说
    passport.initialize()中间件未使用

    结果证明,解决方案是