为经过身份验证的用户提供静态

时间:2016-03-10 22:56:30

标签: node.js express stormpath

如何为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      
    }
});

这不起作用,因为我在为用户启用静态目录后发现,另一个用户可以在不登录的情况下访问私人目录。

2 个答案:

答案 0 :(得分:2)

如果要对路由进行身份验证,则应使用stormpath.loginRequired。如果用户未登录,则会将其重定向到登录页面。

答案 1 :(得分:0)

在我的路线中使用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'));