Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 已验证用户的Express Static_Node.js_Express_Stormpath - Fatal编程技术网

Node.js 已验证用户的Express Static

Node.js 已验证用户的Express Static,node.js,express,stormpath,Node.js,Express,Stormpath,如何在express中仅为用户会话启用静态目录?以一些HTML文件为例,我知道我可以通过下面的调用提供一个名为private的目录 app.use("/private", express.static(appDir + '/private')); 我想做的只是在用户经过身份验证后启用静态资源(以stormpath为例) 例如,下面的函数将检查用户是否存在于stormpath中,如果存在,应用程序将为静态地图目录提供服务 app.get('/getPrivate', stormpath.getU

如何在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 in my routes成功

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'));

我想这更像是一个明确的问题。我对Stormpath部分很熟悉,只想为经过身份验证的用户启用静态内容。我所有的内容都已经用html生成了,我想静态地提供它。