RelayState
从初始登录请求页面的查询字符串中设置,然后(如果IdP尊重它),它在回调POST响应的正文中可用。
因此,在您的情况下,这应该奏效:
app.get(
'/login',
function(req, res, next){
// you could redirect to /login?RelayState=whatever, or set query here,
// the value must be encoded for passing in the query string:
req.query.RelayState = encodeURIComponent('my relay state');
},
passport.authenticate('saml', { 'successRedirect': '/', 'failureRedirect': '/login' }),
function(req, res)
{
res.redirect('/');
}
);
app.post(
'/adfs/postResponse',
passport.authenticate('saml', { 'failureRedirect': '/', 'failureFlash': true }),
function(req, res)
{
console.log(`relay state was ${decodeURIComponent(req.body.RelayState)}`);
res.redirect('/');
}
);