Node.js 使用NestJS和Passport手动启动登录会话
我正在寻找一种方法,以编程方式登录到一个假用户的开发目的。最终目标是我打开应用程序进行演示/开发,有一个假冒用户强行登录(这在生产中被关闭) 目前,我有3套中间件正在运行: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之间添加更多的中间件,并看到我的假用户正在会话中持久化
express session
-设置会话和会话存储提供程序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()中间件未使用
结果证明,解决方案是