最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

从Express路由器中排除公用文件夹

IT培训 admin 4浏览 0评论

从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);
发布评论

评论列表 (0)

  1. 暂无评论