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

标签 node.js express express-jwt

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

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,有没有办法设置全局重定向。

最佳答案

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

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

关于node.js - 如何使用 express-jwt 重定向到未经身份验证的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38336565/

相关文章:

javascript - 为什么 req.somevariable 和 res.locals 不能与 jwt 回调一起使用?

node.js - 没有互联网的 Node 快速安装

javascript - 将其名称位于变量中的 View 文件包含到 EJS 模板中

node.js - ExpressJS 的 Razor View 引擎

node.js - JWT 身份验证安全吗?它如何保护 CORS?

node.js - 预期未授权错误 : jwt audience invalid.:

node.js - 在IIS中发布express js应用程序的步骤

javascript - 将 PHP hash_hmac(sha512) 转换为 NodeJS

javascript - 如何提供 html、css 和 js,同时将 module.export 内的路由保留在不同的文件中?目前仅提供 html

javascript - 将图像文件存储在 Mongoose 模式中的二进制数据中并以 html 形式显示图像