帆:如何授权创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中完全禁用蓝图,而是将策略应用于您自己的自定义路由和方法。