Javascript 未调用router.use中间件

Javascript 未调用router.use中间件,javascript,node.js,express,token,jwt,Javascript,Node.js,Express,Token,Jwt,我有一个使用NodeJS运行的简单服务器应用程序,我尝试实现教程中的路由保护,我已经有了每次登录时都可以使用的令牌 因此,除了注册和登录之外,应该对所有路由调用该中间件。因此,我在初始设置中做到了这一点: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookiePar

我有一个使用NodeJS运行的简单服务器应用程序,我尝试实现教程中的路由保护,我已经有了每次登录时都可以使用的令牌

因此,除了注册和登录之外,应该对所有路由调用该中间件。因此,我在初始设置中做到了这一点:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var debug = require('debug')('express-sequelize');
var http = require('http');
var models = require('./models');
var jwt = require('jsonwebtoken');
var jwtPermission = require('./controller/jwtPermission');
var fotos = require('./routes/fotos');
var app = express();
var router = express.Router();


// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));



  app.use('/',require('./routes/index'));
   app.use(jwtPermission);
   app.use('/fotos',fotos);
未被调用的中间件是jwtPermission。因此,我有一个routes文件夹,其中有一个索引和身份验证文件(具有登录和注册)。对于JWT权限,正如你们所看到的,我只设置了控制器

我在控制器中有一个console.log,但它从未被调用

jwt权限

var jwt = require('jsonwebtoken');
var jwtConfig = require('../config/jwt');

module.exports = function(req, res, next) {
    console.log("entered");

    // check header or url parameters or post parameters for token
    var token = req.body.token || req.query.token || req.headers['x-access-token'];
          console.log(req.headers['x-access-token']);
    // decode token
    if (token) {
        // verifies secret and checks exp
        jwt.verify(token,jwtConfig.secret, function (err, decoded) {
            if (err) {
                return res.json({ success: false, message: 'Failed to authenticate token.' });
            } else {
                // if everything is good, save to request for use in other routes
                req.decoded = decoded;
                next();
            }
        });
    } else {
        // if there is no token
        // return an error
        return res.status(403).send({
            success: false,
            message: 'No token provided.'
        });
    }
}

您可以在
路由
对象中配置路由,但必须将其附加到
应用程序
对象中

因此,在这种情况下,更改
路线。使用
app。使用


不需要使用route对象。

谢谢您的回答,为什么我不能使用route?你能给我解释一下吗?事实上,你能。但在你的事业中,使用路由器是没有必要的。但是如果你真的这样做,你可以在最后把
应用程序中的
路由器连接上。像这样:
app.use(路由器)嘿,leandro还在,我有同样的问题,然后昨天,我将所有内容都更改为app.use,但是如果我将JWT权限放在app.use之前,JWT权限就可以工作。使用(身份验证),任何建议,谢谢:Ddid it,如果我将该权限放在“/”app.use之前,它可以工作,但对于所有路由,甚至是身份验证,我只希望对除身份验证之外的所有路由执行该操作