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

时间:2020-01-24 19:06:55

标签: node.js nestjs passport-saml

我正在寻找一种以编程方式登录伪造用户以进行开发的方法。最终目标是,我出于演示/开发目的打开该应用程序,并且有一个假用户被强制登录(在生产中已关闭)

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

  1. express-session-设置会话和会话存储提供程序
  2. 我编写了一些自定义中间件,只是将开发用户附加到req.session.user
  3. 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;
}

中间件的第三层只是护照中间件。

我确实尝试过在步骤2中呼叫req.logIn,但收到一条消息,提示passport.initialize() middleware not in use

1 个答案:

答案 0 :(得分:0)