Javascript Express.js JWT在成功授权时始终返回默认404错误
我正在尝试执行JWT授权,但当授权成功时,它会在每个请求上返回Express.js default 404 error page HTML页面,而不是我定义的错误处理程序 如果没有令牌或令牌无效,则不会发生这种情况。未经授权的错误,没有令牌头,所有路由都可以正常工作 我高度怀疑下一个authHandler会出现问题,但我不知道原因 app.js中中间件的顺序: //授权书 app.useauthHandler; //路线 app.useroutes; //方法404中间件 app.useerrorHandler.notFound; //通用错误处理中间件 app.useerrorHandler.generic; authHandler: const jwt=require'jsonwebtoken'; exports.userHeader=async req,\u res,next=>{ 如果req.headers&&req.headers.AUTHORITION{ 验证 请求标题授权, process.env.JWT_SECRET, 错误,解码=>{ 如果{ req.user=解码; 下一步返回; } } ; } req.user=未定义; 下一步返回; }; 受保护路线: posts.get'/',user_handler.login_required,post_controller.index; 登录\u所需的处理程序: 异步请求,下一步=>{ 如果需要用户{ 下一步返回; } let error=新错误“未经授权”; error.status=401; 回归恐怖; }; 错误响应: 错误Javascript Express.js JWT在成功授权时始终返回默认404错误,javascript,node.js,express,jwt,Javascript,Node.js,Express,Jwt,我正在尝试执行JWT授权,但当授权成功时,它会在每个请求上返回Express.js default 404 error page HTML页面,而不是我定义的错误处理程序 如果没有令牌或令牌无效,则不会发生这种情况。未经授权的错误,没有令牌头,所有路由都可以正常工作 我高度怀疑下一个authHandler会出现问题,但我不知道原因 app.js中中间件的顺序: //授权书 app.useauthHandler; //路线 app.useroutes; //方法404中间件 app.useerro
我已经测试了你的代码。对我来说,只要稍作改动,它就能正常工作。 仅放置req.user=未定义; 下一步返回;在else语句中,如以下所示{req.user=undefined; return next;}问题出在authHandler中。如果不起作用,下一个必须在外部范围内。我不知道它到底是如何产生这样的问题的,但它的执行上下文或其他内容是不同的,所以express会引发错误 如果有人能揭开这种情况的神秘面纱,那就太好了 authHandler: const jwt=require'jsonwebtoken'; exports.userHeader=async req,\u res,next=>{ 如果req.headers&&req.headers.AUTHORITION{ 验证 请求标题授权, process.env.JWT_SECRET, 错误,解码=>{ 如果{ req.user=解码; } } ; return next;//这个必须在这里 } req.user=未定义; 下一步返回; };
是否检查了路由?@GetSet Yes,如果没有令牌头和授权,则一切正常运行,这修复了已损坏的授权,但根问题是在verify回调中调用next。我在if中移动了下一个外壳,现在可以工作了。