每个模型的sails.js数据访问限制

时间:2014-12-31 17:57:20

标签: sails.js waterline

我正在尝试对我的sails.js apis中的模型实施数据访问限制,并且正在寻找更好的解决方案。

到目前为止,我的策略限制了对控制器上特定操作的访问,该策略修改了请求以包含应始终添加到Model查询的过滤器。 类似的东西:

{
  "owner" : "davepreston"
}

此时我没有看到任何强制(或简化)过滤器使用的方法,所以如果我在我的控制器中使用Model.find而忘记添加过滤器,我可能会显示太多数据用户。

tldr; 有没有办法限制模型中的数据访问,以便访问模型的所有控制器自动获得相同的数据访问限制?

2 个答案:

答案 0 :(得分:1)

一种方法是实施所谓的"定制" Model Methods

我不知道实际覆盖正常"发现"是不是一个好习惯。作为sails的方法,它通过创建像" FindOneByMyAttributeName"等函数来实现一些魔力。但你可以实现一个" findWithRestriction"方法

另请注意,谈论一个模型(理论上)并不是要在那里访问您的请求对象(req),因此请将当前用户作为自定义函数的参数;)

(在我自己的项目中,我坚持使用这些政策,如果您对忘记限制和访问权限感到焦虑,可以进行一些单元测试以验证您的权利管理)

答案 1 :(得分:0)

我找到了一个可以覆盖模型的toJSON方法的地方: 覆盖模型的toJSON()方法

module.exports = {
    attributes: {
        ...
        toJSON: function() {
            var obj = this.toObject();
            delete obj.password;
            return obj;
       }

另一种可能的解决方案(不知道这是否适用于最新版本):

Model.find({select:['col1', 'col2','col3']})