帆:如何授权创build蓝图模型

在我的sails应用程序中,我创build了数据模型和控制器(蓝图模型)。

我制定了以下政策,只批准创build新的数据。

module.exports.policies = { // Prevent all actions '*': false, // Data controller's policies DataController:{ '*': false, 'create': true } }; 

这不起作用,并阻止所有的行动。 不是“创build”规则优先于上面的规则吗?

UPDATE

我的错误,DataController应该被数据replace(感谢#sailsjs IRC)。

我已经更新了政策顺序,但是这也不起作用:

 module.exports.policies = { // Data controller's policies data:{ 'create': true, 'find': false, 'findAll': false, 'update': false, 'destroy': false } }; 

有了这个代码,即使是“创build”行为也是被禁止的,这是我唯一需要向任何人开放的行为。

我假设你正在使用Sails.js提供的内置蓝图

您会发现以下策略将允许您访问“/ data / create”路由

 data: { 'find': true, 'create': true, 'update': true, 'destroy': false, 'findAll': false } 

我不确定为什么您的策略必须像这样configuration才能访问“创build”路线,但是我想这跟蓝图在幕后执行的方式有关

解决您的问题的一个可能的方法是创build自己的路线,以覆盖Sails提供的默认蓝图。 例如,将“/ data / create”映射到Data控制器中的createData方法,然后指定适用于此方法的策略。

我的理解是,这些CRUD路由只是在开发过程中使用,你会发现这也是在config / controllers.js文件

 // These CRUD shortcuts exist for your convenience during development, // but you'll want to disable them in production. // '/:controller/find/:id?' // '/:controller/create' // '/:controller/update/:id' // '/:controller/destroy/:id' 

由于蓝图并不打算在生产中使用,所以针对这些默认CRUD快捷方式的编写策略没有任何用处。 因此,另一个select是在config / controllers.js中完全禁用蓝图,而是将策略应用于您自己的自定义路由和方法。