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

时间:2017-08-25 13:26:58

标签: node.js express jwt passport.js json-web-token

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

  1. 用户呼叫登录端点
  2. 他们被重定向到SAML身份提供商。
  3. 提供商验证用户并发回授权 到回调URL上的服务器。
  4. 我正在使用POST回调URL进行身份验证,然后创建一个 用户执行授权和会话管理的令牌。
  5. 回调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');
    
        }
    );
    

1 个答案:

答案 0 :(得分:4)

您在这里有一系列选项

<强>曲奇

res.cookie('token', token, ...);
res.redirect(...);

网址参数

res.redirect(`/some/url?token=${token}`);

自定义标题

res.set('x-token', token);
res.redirect(...);