为经过身份验证的用户快速静态
Express Static for Authenticated Users
如何在 express 中仅为用户会话启用静态目录?以一些 HTML 文件为例,我知道我可以通过下面的调用提供一个名为 private 的目录
app.use("/private", express.static(appDir + '/private'));
我想做的只是在用户通过身份验证后启用静态资源(以 stormpath 为例)。
例如,下面的函数将检查用户是否存在于 stormpath 中,如果存在,应用程序将提供地图的静态目录。
app.get('/getPrivate', stormpath.getUser, function(req, res) {
if(req.user){
app.use("/private", express.static(appDir + '/private'));
res.redirect('/private/index.html');
}else{
//your not logged in.... redirect to login page
}
});
这不起作用,因为我发现一旦我为一个用户启用静态目录,另一个用户就可以在不登录的情况下访问私有目录。
如果你想要求路由认证,你应该使用stormpath.loginRequired
。如果用户未登录,他们将被重定向到登录页面。
在我的路线中使用 app.all 成功了
var path = require('path');
var express = require('express');
var appDir = path.dirname(require.main.filename);
app.all('/private/*', stormpath.getUser, function(req, res, next) {
if(req.user){
next();
}else{
//you are not logged in.... redirect to login page
res.redirect('/');
}
});
app.use("/private", express.static(appDir + '/private'));
如何在 express 中仅为用户会话启用静态目录?以一些 HTML 文件为例,我知道我可以通过下面的调用提供一个名为 private 的目录
app.use("/private", express.static(appDir + '/private'));
我想做的只是在用户通过身份验证后启用静态资源(以 stormpath 为例)。
例如,下面的函数将检查用户是否存在于 stormpath 中,如果存在,应用程序将提供地图的静态目录。
app.get('/getPrivate', stormpath.getUser, function(req, res) {
if(req.user){
app.use("/private", express.static(appDir + '/private'));
res.redirect('/private/index.html');
}else{
//your not logged in.... redirect to login page
}
});
这不起作用,因为我发现一旦我为一个用户启用静态目录,另一个用户就可以在不登录的情况下访问私有目录。
如果你想要求路由认证,你应该使用stormpath.loginRequired
。如果用户未登录,他们将被重定向到登录页面。
在我的路线中使用 app.all 成功了
var path = require('path');
var express = require('express');
var appDir = path.dirname(require.main.filename);
app.all('/private/*', stormpath.getUser, function(req, res, next) {
if(req.user){
next();
}else{
//you are not logged in.... redirect to login page
res.redirect('/');
}
});
app.use("/private", express.static(appDir + '/private'));