如何在sails.js中验证对资产文件夹的访问权限

时间:2014-06-16 01:34:57

标签: static sails.js assets passport.js

我已经使用护照来验证用户身份。我将kibana 3添加到assets文件夹,并希望用户只有在经过身份验证后才能访问它。我该怎么做?

1 个答案:

答案 0 :(得分:8)

资产文件夹适用于公开可用的文件,例如图片和Javascripts。如果要保护这些文件,可以覆盖Sails中的默认www中间件,激活Express静态处理程序以提供这些文件(请参阅this answer中覆盖默认中间件的详细信息),或者保存要在不同位置保护的文件,并使用控制器操作为它们提供服务(可能是更合理的选项)。

因此,您可以将文件保存在 protected_files 中,并将此类路由添加到 config / routes.js

'/protected/:file': 'ProtectedFileController.download'

然后在 controllers / ProtectedFileController

var fs = require('fs');
var path = require('path');
module.exports = {
    download: function(req, res) {

        // Get the URL of the file to download
        var file = req.param('file');

        // Get the file path of the file on disk
        var filePath = path.resolve(sails.config.appPath, "protected_files", file);

        // Should check that it exists here, but for demo purposes, assume it does
        // and just pipe a read stream to the response.
        fs.createReadStream(filePath).pipe(res);

    }


};

然后使用类似于您需要身份验证的任何其他区域的策略来保护该控制器/操作。