【发布时间】: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。另外,我的带有身份验证的服务器要慢得多,可能是因为每次请求文件时它都必须检查身份验证。有关如何加快速度的任何提示?
【问题讨论】:
-
"每次请求文件时都必须检查身份验证" - passport.js 内置了会话管理,请参见此处:passportjs.org/guide/configure
标签: javascript node.js express