簡體   English   中英

為什么在成功授權后使用 Express 的節點 js 中間件不會調用給定 API?

[英]Why node js middleware using Express after successful authorization does not call given API?

我有下面的設置來調用 API 與中間件在成功之前授權它。

  1. Calling API with token i d with header object using jquery ajax,
 $.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 } });
  1. 如下設置節點服務器,
 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')); ...
  1. 在modelApi/index.js中設置API,
 var express = require('express'), router = express.Router(), api = require('../api.js'), router.post('/api/auth/fetchMycontent', api.fetchMycontent); module.exports = router;
  1. middleware.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, } }); } }, };
  1. 從 api.js,fetchMycontent function 會像
 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()?! 我在這里想念什么? 請指教

提前致謝

我認為您缺少像export class AuthenticationMiddleware implements ExpressMiddlewareInterface並實現use function use(req, res, next)這樣的擴展

基礎 url 添加了兩個斜線,通過刪除一個 / 進行修復,它工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM