2014-09-04 24 views
4

我使用express.js和passport.js实现了基于this tutorial的认证系统。使用ExpressJS保护静态文件服务器

在过去,我已经使用modRewrite明示服务器是这样的:

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。此外,我的身份验证服务器速度较慢,可能是因为每次请求文件时都必须检查身份验证。任何提示如何使这个更快?

+0

“每次请求文件时都必须检查身份验证” - passport.js具有内置的会话管理,请参阅:http://passportjs.org/guide/configure/ – kol 2014-09-05 03:13:06

回答

0

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

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