Node.js Sails:如何仅授权创建蓝图模型
在我的sails应用程序中,我创建了数据模型和控制器(蓝图模型) 我已设置以下策略,仅授权创建新数据Node.js Sails:如何仅授权创建蓝图模型,node.js,sails.js,Node.js,Sails.js,在我的sails应用程序中,我创建了数据模型和控制器(蓝图模型) 我已设置以下策略,仅授权创建新数据 module.exports.policies = { // Prevent all actions '*': false, // Data controller's policies DataController:{ '*': false, 'create': true } }; 这不起作用,会阻止所有操作。“创建”规则的优先级不高于它上面的规则吗 更
module.exports.policies = {
// Prevent all actions
'*': false,
// Data controller's policies
DataController:{
'*': false,
'create': true
}
};
这不起作用,会阻止所有操作。“创建”规则的优先级不高于它上面的规则吗
更新
我的错误是,DataController应该被数据取代(多亏了#sailsjs IRC)
我已更新了策略订单,但这也不起作用:
module.exports.policies = {
// Data controller's policies
data:{
'create': true,
'find': false,
'findAll': false,
'update': false,
'destroy': false
}
};
有了这段代码,即使是“创建”操作也被禁止,因为这是我唯一需要向任何人开放的操作。我假设您使用的是Sails.js提供的内置蓝图 您会发现以下策略将允许您访问“/data/create”路由
data: {
'find': true,
'create': true,
'update': true,
'destroy': false,
'findAll': false
}
我不确定为什么您的策略必须这样配置才能访问“创建”路径,但我认为这与蓝图在幕后的实现方式有关
解决问题的一个可能方法是创建自己的路线,覆盖Sails提供的默认蓝图。例如,将“/data/create”映射到数据控制器内的createData方法,然后指定应用于此方法的策略
我的理解是,这些CRUD路由仅用于开发过程中,您会发现config/controllers.js文件中也说明了这一点
由于蓝图不打算在生产中使用,因此编写针对这些默认CRUD快捷方式的策略毫无意义。因此,另一个选项是在config/controllers.js中完全禁用蓝图,而是将策略应用于您自己的自定义路由和方法。如何为返回所有条目列表的GET/:controller blueprint执行策略?
// 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'