从Express路由器中排除公用文件夹
我想从快速路由器中排除public
文件夹以及所有静态文件和子文件夹。
当前,我已经定义了1)公用文件夹,2)several SF答案中建议的路由器:
// public folder
self.app.use(express.static(path.join(__dirname, 'public')));
// static pages
self._options.staticRoutes.forEach(route => {
self.app.use(BASEPATH + route, express.static(path.join(__dirname, 'public')));
});
// register page renderer
router.get(BASEPATH, renderer.render());
// templates
self._options.routes.forEach(route => {
self.app.use(BASEPATH + route, router);
});
// router
self.app.use(BASEPATH, router);
// register error handlers
self.app.use(renderer.logErrors());
self.app.use(renderer.clientErrorHandler());
self.app.use(renderer.catchAll());
稍后我掌握了所有检查用户登录的信息:
self.app.use(function (req, res, next) {
var redirect_uri = '/login';
if (req.user) {
return next();
} else {
return res.redirect(redirect_uri);
}
});
此路由会导致304
重定向以及public
文件夹下的静态文件。我应该使用中间件来避免这种情况吗?如果是这样,如何?
use middlewares in express有多种方法。
而不是从应用程序级登录检查中排除静态/公共资源(您可以检查请求,而仅跳过某些路径的检查,我宁愿在敏感路径上使用路由器级中间件。
您可以在当前的路由调用中像这样定义路由器级中间件:
router.get('/path_of_this_route', middleware1, middleware2, ..., requestHandler);
通常我会做这样的事情:
serverApp.use(express.static(__dirname + '/public'));
// loginController renders the login pages (and password-reset etc) and provides login/logout functionality
router.use('/', loginController);
router.use('/login', loginController);
// every request to the '/secured' path will be send through the authentication check middleware
router.use('/secured', loginController.checkLoginMiddleware, securedContentPageController);
从Express路由器中排除公用文件夹
我想从快速路由器中排除public
文件夹以及所有静态文件和子文件夹。
当前,我已经定义了1)公用文件夹,2)several SF答案中建议的路由器:
// public folder
self.app.use(express.static(path.join(__dirname, 'public')));
// static pages
self._options.staticRoutes.forEach(route => {
self.app.use(BASEPATH + route, express.static(path.join(__dirname, 'public')));
});
// register page renderer
router.get(BASEPATH, renderer.render());
// templates
self._options.routes.forEach(route => {
self.app.use(BASEPATH + route, router);
});
// router
self.app.use(BASEPATH, router);
// register error handlers
self.app.use(renderer.logErrors());
self.app.use(renderer.clientErrorHandler());
self.app.use(renderer.catchAll());
稍后我掌握了所有检查用户登录的信息:
self.app.use(function (req, res, next) {
var redirect_uri = '/login';
if (req.user) {
return next();
} else {
return res.redirect(redirect_uri);
}
});
此路由会导致304
重定向以及public
文件夹下的静态文件。我应该使用中间件来避免这种情况吗?如果是这样,如何?
use middlewares in express有多种方法。
而不是从应用程序级登录检查中排除静态/公共资源(您可以检查请求,而仅跳过某些路径的检查,我宁愿在敏感路径上使用路由器级中间件。
您可以在当前的路由调用中像这样定义路由器级中间件:
router.get('/path_of_this_route', middleware1, middleware2, ..., requestHandler);
通常我会做这样的事情:
serverApp.use(express.static(__dirname + '/public'));
// loginController renders the login pages (and password-reset etc) and provides login/logout functionality
router.use('/', loginController);
router.use('/login', loginController);
// every request to the '/secured' path will be send through the authentication check middleware
router.use('/secured', loginController.checkLoginMiddleware, securedContentPageController);