节点:使用页面重定向向客户端发送 JSON Web 令牌

Node: Sending JSON Web token to client with page redirect

我正在使用 Node Express 构建我的后端服务器。此外,身份验证是我的应用程序使用 Passport-SAML 进行的。我正在使用 JWT 来维护用户会话。 所以流程是,

  1. 用户调用登录端点
  2. 他们被重定向到 SAML 身份提供商。
  3. 提供商验证用户并发回授权 通过回调 URL.
  4. 发送到服务器
  5. 我正在使用 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(...);