生成jwt后如何重定向配置文件或其他受保护的路由

时间:2019-06-25 08:48:23

标签: javascript node.js api express jwt

我正在创建一个功能全面的网站,当用户转到登录页面(使用GET请求),填写表格并提交(使用POST请求)时,必须将其重定向到个人资料。所有这些都是使用JWT完成的。

“我不想看到代币已创建,如果代币已创建并有效,我只想重新定向。”

以下是我的路线-

var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
var jwt = require('jsonwebtoken');

router.use(bodyParser.json());
router.use(bodyParser.urlencoded({extended: false}));

//models
var User = require('../models/signupModel');

router.get('/login', function(req, res){   //for heading over to Login page
res.render('login');
})


router.post('/login', function(req, res){
  User.findOne({username: req.body.username, password: req.body.password}).then(function(result){
    if(result){
      var payload = {
        id: result._id,
        username: result.username,
      }
      let token = jwt.sign(payload, 'my_secret', {expiresIn: '1h'});

      /*
             I WANT TO REDIRECT FROM HERE TO PROFILE
      */

    }
    else{
      res.redirect('/login');
    }

  })

})

router.use((req, res, next) => {

  var token = req.headers['x-access-token'] || req.body.token

  if (token) {
    jwt.verify(token, 'my_secret', function (err, decoded) {
      if (!err) {
        req.decoded = decoded; 
        next();
      } else {
        res.status(403).send('Invalid token supplied');
      }
    })
  } else {
    res.status(403).send('Authorization failed! Please provide a valid token');
  }
})

router.get('/profile', function(req, res){
   //RENDERING PROFILE PAGE HERE USER EXISTS
})

module.exports = router;

我总是收到“授权失败!请提供有效的令牌”。令牌似乎没有存储在任何地方,或者没有与Header一起传递。 “请帮助我进行此工作。”

注意:我到处都找不到解决方案,每个人都在展示与POSTMAN的配合使用并显示生成的令牌,没有人在与真实的项目一起使用

预先感谢

0 个答案:

没有答案