【问题标题】:Disabling default sails.js routes禁用默认sails.js 路由
【发布时间】:2014-11-14 02:21:12
【问题描述】:

我正在设置一个基本的 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访问

【问题讨论】:

    标签: javascript node.js sails.js


    【解决方案1】:

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

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

    所以你禁用了除索引之外的所有操作的自动路由..

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

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

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

    【讨论】:

    • 就是这样!从/config/blueprints.js 文件来看,它似乎也适用于全局级别。
    • 谢谢,希望这在文档中!
    • 现在不需要添加index : false,没有它也可以。这适用于全局和特定于控制器的配置
    【解决方案2】:

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

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

    【讨论】:

    • 可能,但是如果我想通过不同的(自定义)路由公开控制器怎么办?即我希望 FooController 可以通过 /foostuff 访问,但 not /foo?
    • 您可以使用/config/route.js 来完成此操作,请参阅文档link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 2019-10-29
    • 1970-01-01
    • 2010-12-20
    • 2017-08-03
    • 2012-03-27
    • 2016-10-15
    相关资源
    最近更新 更多