Javascript 未调用router.use中间件
我有一个使用NodeJS运行的简单服务器应用程序,我尝试实现教程中的路由保护,我已经有了每次登录时都可以使用的令牌 因此,除了注册和登录之外,应该对所有路由调用该中间件。因此,我在初始设置中做到了这一点: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
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之前,它可以工作,但对于所有路由,甚至是身份验证,我只希望对除身份验证之外的所有路由执行该操作