如何使用express-jwt重定向到未经身份验证的用户

时间:2016-07-12 18:39:24

标签: node.js express express-jwt

这是我的第一个快递应用。我正在尝试为某些路由实现身份验证。理想情况下,如果用户未经过身份验证,则会将其重定向到主页。所以我写了这个中间件:

var jwt = require('express-jwt');

app.get('/protected',
  jwt({secret: 'shhhhhhared-secret'}),      //express-jwt middleware
  function(req, res, next) {                //redirection middleware
    if(!req.user._id){
      console.log('authentication failed')
      res.redirect('/home')
    }else{
      next()
    };
  });

如果用户已登录,则代码有效。但是,如果用户未登录,则浏览器仅显示401未经授权的错误。没有重定向。此过程在express-jwt中间件上失败,并且没有继续使用我的重定向中间件。

我是否需要在jwt函数中设置一些配置?或者,如果遇到401,有办法设置全局重定向。

1 个答案:

答案 0 :(得分:4)

如果用户未经过身份验证,则会抛出错误并且node.js会停止代码执行。之后,您将能够在快速错误处理程序中捕获它:

  app.use(function(err, req, res, next) {
    if(401 == err.status) {
        res.redirect('/home')
    }
  });