为节点获取Sails。
我需要习惯的一件事是使用blueprints
设置控制器方法路线的'自动'方式。
例如,从文档中,如果actions
- 蓝图已启用(默认情况下为),则会为每个蓝图生成GET,POST,PUT和DELETE路由。控制者的行动。
来自文档,当你有控制方法EmailController.send
时,会创建以下路由:
* `EmailController.send`
* :::::::::::::::::::::::::::::::::::::::::::::::::::::::
* `GET /email/send/:id?`
* `POST /email/send/:id?`
* `PUT /email/send/:id?`
* `DELETE /email/send/:id?`
文档具体说明:actions
默认启用,并且可以生产 - 但是,您必须非常小心不要无意中将不安全的控制器逻辑暴露给GET请求。
通常我会为一个特定的HTTP谓词编写一个控制器方法(例如:POST)。这显然不与这种自动化布线兼容,因为这些方法也会暴露在GET(以及PUT和DELETE)上,这将留下巨大的安全足迹。
那么:启用这些actions
的实际用途是什么?对我而言,这似乎是一个巨大的安全风险。另一方面,我可以(理论上)想象使用条件逻辑编写所有控制器方法来区分HTTP VERBS,但对于大多数控制器方法,这只是没有意义。
请帮助我:使用这些actions
的优势是什么,Sails似乎试图推动我走向?或者它只是一种快速上手的方式,但真的不适合生产?
感谢我把头包裹起来。
答案 0 :(得分:0)
Action Blueprints自动创建指向所有可用控制器方法的路径。我亲自关掉它们,然后手动完成路由。
Restful蓝图自动生成控制器方法。然后,哪些路径将由Action Blueprints创建。我相信这些是其余的默认值....
* GET /boat/:id? -> BoatController.find
* POST /boat -> BoatController.create
* PUT /boat/:id -> BoatController.update
* DELETE /boat/:id -> BoatController.destroy