禁用默认的sails.js路由

时间:2014-11-14 02:21:12

标签: javascript node.js sails.js

我正在设置一个基本的Sails.js应用程序,我正在尝试禁用sails.js中的默认路由系统。文档here似乎表明可以通过设置/config/blueprints.js

module.exports.blueprints = { actions: false };文件中禁用该文档

但是,当我执行sails lift时,我仍然可以在/foo

访问我的默认控制器

编辑:这是使用Sails v0.10.5,除了以下两个文件之外没有任何更改。

/**   /api/controllers/FooController.js **/
module.exports = {
    index: function(req, res) {
        return res.send("blah blah blah");
    }
};

/**   /config/blueprints.js **/
module.exports.blueprints = {
    actions: false,
    rest: false,
    shortcuts: false,
    prefix: '',
    pluralize: false,
    populate: false,
    autoWatch: true,
    defaultLimit: 30
};

此外,如果我在每个控制器的基础上禁用蓝图,则问题仍然存在:

/**   /api/controllers/FooController.js **/
module.exports = {
    _config: { actions: false, shortcuts: false, rest: false },
    index: function(req, res) {
        return res.send("blah blah blah");
    }
};

仍可在/foo

访问控制器

2 个答案:

答案 0 :(得分:7)

这个问题有点棘手。您正在尝试打开Controller.index方法。 同时,您将禁用所有操作的路由。

但实际上0.10.5中的Sails.js具有禁用来自控制器的索引路由的附加配置。 它的名字:索引。

因此您为除索引之外的所有操作禁用了自动路由。

要禁用您必须设置的所有自动路线:

_config: {
    actions: false,
    shortcuts: false,
    rest: false,

    index: false
}

似乎有人忘记将其添加到文档中。

答案 1 :(得分:0)

您可以使用 config 文件夹下的政策来执行此操作。

module.exports.policies = {
    YourControllerName: {
        'find': true,
        '*': false
    }
}