【发布时间】:2018-09-12 18:40:12
【问题描述】:
我正在使用 node、express 创建一个应用程序,并为所有路由实现了一个护照授权中间件。我正在遵循高度模块化的方法来构建我的应用程序。当我将特定 API 包含在授权中间件之上时,我会尝试从身份验证中排除它们。但是当我在授权中间件上方包含app.use('/', require('./api/search/index')); 时,下方的 API 将停止工作。
欢迎批评和建议这种方法,我能做些什么来解决这个问题。
我不想像这样在每条路由中包含路由中间件
route.get('/example', auth.middleware(), function (req, res) {
})
以下是我的应用方法,所有路由都使用单一授权中间件
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var auth = require("./auth.js")();
app.use(auth.initialize());
//Excluding the search API from Authentication,
app.use('/', require('./api/search/index'));
//Middleware for all APIs and require Auth headers for authrization access
app.use(auth.authenticate(), function (req, res, next) {
if (req.headers.authorization && req.user) {
var parted = req.headers.authorization.split(' ');
if (parted.length === 2) {
console.log(req.user);
next();
} else {
return res.status(403).send({
success: false,
msg: 'Unauthorized.'
});
}
} else {
return res.status(503).send({
success: false,
msg: 'Bad Request'
});
}
});
//Join routers
app.use('/', require('./api/users/index'));
app.use('/', require('./api/product/index'))
app.use('/', require('./api/company/index'))
【问题讨论】:
标签: javascript node.js express authentication