Node.js sails:在生产中禁用“蓝图操作”,因为这会造成巨大的安全隐患?

Node.js sails:在生产中禁用“蓝图操作”,因为这会造成巨大的安全隐患?,node.js,sails.js,Node.js,Sails.js,正在获取节点的默认值 我需要习惯的一件事是使用蓝图设置控制器方法路由的“automagic”方式 例如,从文档中,如果启用了操作-蓝图(默认情况下为),则将为控制器的每个操作生成获取、发布、放置和删除路由 例如,从文档中,当您拥有受控方法时,将创建以下路由: * `EmailController.send` * ::::::::::::::::::::::::::::::::::::::::::::::::::::::: * `GET /email/send

正在获取节点的默认值

我需要习惯的一件事是使用
蓝图设置控制器方法路由的“automagic”方式

例如,从文档中,如果启用了
操作
-蓝图(默认情况下为),则将为控制器的每个操作生成获取、发布、放置和删除路由

例如,从文档中,当您拥有受控方法时,将创建以下路由:

     * `EmailController.send`
     * :::::::::::::::::::::::::::::::::::::::::::::::::::::::
     * `GET     /email/send/:id?`
     * `POST    /email/send/:id?`
     * `PUT     /email/send/:id?`
     * `DELETE  /email/send/:id?`
文档特别指出:
操作默认情况下处于启用状态,并且可以用于生产—但是,您必须非常小心不要无意中暴露不安全的控制器逻辑以获取请求

通常我会为一个特定的HTTP动词(例如:POST)编写一个控制器方法。这显然与这种automagic布线不兼容,因为这些方法也会在GET(以及PUT和DELETE)上公开,这将在imho中留下巨大的安全足迹

那么:启用这些
操作的实际用途是什么?对我来说,这似乎是一个巨大的安全风险。另一方面,我可以(理论上)想象使用条件逻辑编写所有控制器方法来区分HTTP动词,但对于大多数控制器方法来说,这根本没有意义

所以,请帮我一个忙:使用这些
动作的好处是什么?或者,这只是一种快速启动的方式,但实际上并不意味着用于生产


谢谢你把我的头缠在这上面

操作蓝图自动创建到所有可用控制器方法的路由。我亲自关闭它们,并手动执行路由

Restful蓝图自动生成控制器方法本身。然后通过行动蓝图创建到他们的路线。我相信这些是其余的默认值

 * GET      /boat/:id?      -> BoatController.find
 * POST     /boat           -> BoatController.create
 * PUT      /boat/:id       -> BoatController.update
 * DELETE   /boat/:id       -> BoatController.destroy

我比较喜欢其余的蓝图,我想我将在生产中启用它们(使用正确的策略)。我不喜欢的是行动蓝图。我这样问是因为这可能是我个人的喜好,我不喜欢他们,所以我想知道为什么我想在prod中启用他们。你可以在禁用行动蓝图的情况下使用其余蓝图。你只需要手工创建路由。我个人不使用蓝图,因为我需要更多地控制我的控制器方法。你知道如何将策略添加到蓝图restful方法吗??我确实找到了如何做到这一点