使用 NestJS 和 Passport 手动启动登录会话
Manually initiate login session using NestJS and Passport
我正在寻找一种以编程方式登录假用户以用于开发目的的方法。最终目标是我出于 demo/development 目的打开应用程序并且有一个假用户强行登录(这在生产中被关闭)
目前我有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;
}
第三层中间件就是passport中间件
我确实尝试在第 2 步中调用 req.logIn
,但我收到一条消息说 passport.initialize() middleware not in use
。
nestjs-session with a custom passport strategy原来是解决方案
我正在寻找一种以编程方式登录假用户以用于开发目的的方法。最终目标是我出于 demo/development 目的打开应用程序并且有一个假用户强行登录(这在生产中被关闭)
目前我有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;
}
第三层中间件就是passport中间件
我确实尝试在第 2 步中调用 req.logIn
,但我收到一条消息说 passport.initialize() middleware not in use
。
nestjs-session with a custom passport strategy原来是解决方案