【问题标题】:Securing Static File Server with ExpressJS使用 ExpressJS 保护静态文件服务器
【发布时间】:2014-10-29 15:48:17
【问题描述】:

我已经使用 express.js 和 passport.js 实现了一个基于 this tutorial 的身份验证系统。

过去我使用过一个带有 modRewrite 的 express 服务器,看起来像这样:

var express    = require('express');
var modRewrite = require('connect-modrewrite');

var app = express();
var baseURL = './dev/';
var portnum = 3000;

app.use(modRewrite([
  '^[^\\.]*$ /index.html [L]'
]))
.use(express.static(baseURL))
app.listen(process.env.PORT || portnum)

但是现在有了身份验证,我正在使用这样的路由:

var baseURL = './dev/';

router.get('*', isAuthenticated, function(req, res, next){

    // if path contains file extension
    // behave as static file server
    if (req.path.indexOf('.') !== -1) {

        var fullPath = baseURL + req.path;
        res.sendfile(fullPath)

    // else send index.html
    } else {

        res.sendfile(baseURL + '/index.html')

    }

});

我认为有更好的方法来做我想做的事,我想利用 express.static 服务器以及 modRewrite。另外,我的带有身份验证的服务器要慢得多,可能是因为每次请求文件时它都必须检查身份验证。有关如何加快速度的任何提示?

【问题讨论】:

标签: javascript node.js express


【解决方案1】:

我使用中间件检查用户是否经过身份验证(无论是在 JWT 令牌中还是在任何数量的其他身份验证方案中)。

app.use(function (req, res, next) {
    if(isAuthenticated()) {
       next();
    } else {
       res.send(401, 'unauthorized');
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2012-08-20
    • 2013-12-08
    • 2020-05-18
    • 2017-09-18
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多