0

我遵循在模型目录中定义 json 文件的示例应用程序样式,以及用于加载 json 的 .js 文件。

我的问题是我的 json 文件中拒绝everyone角色的 acls 定义未被识别。我能够以GET api/clients非特权用户的身份成功使用 status 200。我希望得到一个状态401,拒绝访问。

作为测试,我将相同的 acls 定义添加到默认用户模型的 json 中,并且我得到了401预期的状态访问被拒绝。

这是一些client.json(就像在客户中一样,不要与前端的东西混淆)

{
  "name": "client",
  "public": true,
  "dataSource": "db",
  "plural": "clients",
  "options": {
    "strict": true,
    "acls": [
      {
        "accessType": "*",
        "permission": "DENY",
        "principalType": "ROLE",
        "principalId": "$everyone"
      }
    ],
    "scopes": {
      "active": {"where": {"active": true}, "order": "company_name"}
    }
  },
  "properties": {
    "id": {
      "type": "string",
      "generated": true,
      "id": true
    },
    "active": {
      "type": "Boolean",
      "default": true
    },
    "company_name": {
      "type": "string",
      "required": true,
      "length": 64
    }
}

客户端.js

var app = require('./../app');
var db = app.dataSources.db;

// Load config
var config = require('./client.json');

// Create model from config
var Client = db.createModel('client', config);

// Add to REST API
app.model(Client);

module.exports = Client;

acls 应该在我的客户端模型上工作还是我需要在这里设置其他东西?

4

1 回答 1

2

我弄清楚了这个问题。

config.properties并且config.options应该createModel作为单独的参数发送。

var Client = db.createModel('client', config.properties, config.options);

如果您将整个配置作为属性传递,则不会产生错误。

另请注意,在对象config.plural内部定义时也有效。config.options

于 2014-05-28T14:33:48.160 回答