节点:使用页面重定向向客户端发送 JSON Web 令牌
Node: Sending JSON Web token to client with page redirect
我正在使用 Node Express 构建我的后端服务器。此外,身份验证是我的应用程序使用 Passport-SAML 进行的。我正在使用 JWT 来维护用户会话。
所以流程是,
- 用户调用登录端点
- 他们被重定向到 SAML 身份提供商。
- 提供商验证用户并发回授权
通过回调 URL.
发送到服务器
- 我正在使用 POST 回调 URL 进行身份验证,然后创建一个
用户执行授权和会话管理的令牌。
回调 POST 端点也有一个页面重定向。到目前为止,我了解到 res.status 和 res.redirect 不能位于同一端点,原因很明显。我一直在努力寻找正确的方法,非常感谢任何帮助。
router.route('/login')
.get(
passport.authenticate(config.passport.strategy,
{
successRedirect: '/',
failureRedirect: '/login'
})
);
router.route(config.passport.saml.path)
.post(
passport.authenticate(config.passport.strategy,
{
failureRedirect: '/',
failureFlash: true
}),
function (req, res) {
res.redirect('/');
var token = Verify.getToken(req.user.saml);
return res.status(200).json({
status: 'Login successful!',
success: true,
token: token
});
console.log(token,'yes');
}
);
这里有一系列选项
Cookie
res.cookie('token', token, ...);
res.redirect(...);
URL参数
res.redirect(`/some/url?token=${token}`);
自定义header
res.set('x-token', token);
res.redirect(...);
我正在使用 Node Express 构建我的后端服务器。此外,身份验证是我的应用程序使用 Passport-SAML 进行的。我正在使用 JWT 来维护用户会话。 所以流程是,
- 用户调用登录端点
- 他们被重定向到 SAML 身份提供商。
- 提供商验证用户并发回授权 通过回调 URL. 发送到服务器
- 我正在使用 POST 回调 URL 进行身份验证,然后创建一个 用户执行授权和会话管理的令牌。
回调 POST 端点也有一个页面重定向。到目前为止,我了解到 res.status 和 res.redirect 不能位于同一端点,原因很明显。我一直在努力寻找正确的方法,非常感谢任何帮助。
router.route('/login')
.get(
passport.authenticate(config.passport.strategy,
{
successRedirect: '/',
failureRedirect: '/login'
})
);
router.route(config.passport.saml.path)
.post(
passport.authenticate(config.passport.strategy,
{
failureRedirect: '/',
failureFlash: true
}),
function (req, res) {
res.redirect('/');
var token = Verify.getToken(req.user.saml);
return res.status(200).json({
status: 'Login successful!',
success: true,
token: token
});
console.log(token,'yes');
}
);
这里有一系列选项
Cookie
res.cookie('token', token, ...);
res.redirect(...);
URL参数
res.redirect(`/some/url?token=${token}`);
自定义header
res.set('x-token', token);
res.redirect(...);