为了账号安全,请及时绑定邮箱和手机立即绑定

为什么节点js中间件在授权成功后使用Express不调用给定的API?

为什么节点js中间件在授权成功后使用Express不调用给定的API?

动漫人物 2022-08-18 15:39:26
我在下面设置了使用中间件调用API以在成功之前对其进行授权。使用jquery ajax调用带有令牌id的标头对象的API,    $.ajax({    url : '/api/auth/fetchMycontent',    type: 'POST',    dataType: 'json',    contentType: 'application/json; charset=utf-8',    cache: false,    context: this,    headers: {        "X-Access-Token": tokenId    },    data: JSON.stringify({        accountId: accountId    }),    success: function(data){        //render data in HTML    }});设置节点服务器如下,var express = require('express'); var app = express(); var bodyParser = require('body-parser');// Add your middlewares:var middleware = require("middlewares");app.use(bodyParser.json());app.all('/api/auth/*', middleware.apiValidate);app.use('/', require('./modelApi'));...在 modelApi/index 中设置 API.js,  var express = require('express'),  router = express.Router(),  api = require('../api.js'),  router.post('/api/auth/fetchMycontent', api.fetchMycontent);  module.exports = router;中间件.js文件会像  module.exports = {  apiValidate: function (req, res, next) {    var token = req.body.x_access_token;    if (token) {      elastic.fetchToken(table, token).then(function (data) {               if (data.hits.total > 0) {          **//authorization success but next() fails here <------**          next();        } else {          res.json({            message: "Invalid User access!!",          });          return;        }      });    }  },};从api.js,fetchMycontent函数会像    fetchMycontent : function(req, res) {    **console.log('not reaching after authorization success !!!')**    elastic.fectMycontent(table, req.body).then(function (data) {                                  res.set('Content-Type', 'application/json');                            res.status(200);                            res.send(data);                })    }当我调用api'fetchMycontent'时,它会按预期调用中间件并对其进行授权,并且不会调用fetchMycontent()!!!我在这里错过了什么?请告知
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

基本网址添加了两个斜杠,通过删除一个/来修复,并且工作正常。


查看完整回答
反对 回复 2022-08-18
?
四季花海

TA贡献1811条经验 获得超5个赞

我认为你缺少扩展喜欢和实现功能export class AuthenticationMiddleware implements ExpressMiddlewareInterfaceuseuse(req, res, next)



查看完整回答
反对 回复 2022-08-18
  • 2 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信