Loopback $owner не работает для findById

Я хотел бы получить некоторую информацию о моем пользователе с обратной связью. Для этого я создал "user" модель, связанная с "accessToken" модель до сих пор ПОСТ на /userПОЧТА на /user/login и ПОЧТА на /user/logout работает.

Я добавил на /common/models/user.json

{
  "name": "user",
  "base": "User",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {},
  "validations": [],
  "relations": {
    "accessTokens": {
      "type": "hasMany",
      "model": "accessToken",
      "foreignKey": "userId"
    }
  },
  "acls": [
    {
      "accessType": "EXECUTE",
      "principalType": "ROLE",
      "principalId": "$authenticated",
      "permission": "ALLOW",
      "property": "logout"
    },
    {
      "accessType": "EXECUTE",
      "principalType": "ROLE",
      "principalId": "$owner",
      "permission": "ALLOW",
      "property": "findById"
    }
  ],
  "methods": {}
}

И когда я получаю на /user/{id} Я получил:

{
  "error": {
    "statusCode": 401,
    "name": "Error",
    "message": "Autorisation requise",
    "code": "AUTHORIZATION_REQUIRED",
    "stack": "Error: Autorisation requise\n    at..."
  }
}

Я думаю, я не очень хорошо понял ACL / отношение

0 ответов

Это может быть потому, что вы только позволяете $owner в findById:

Чтобы квалифицировать $ owner, целевая модель должна иметь отношение ownTo к модели User (или модели, расширяющей User) и свойство, соответствующее внешнему ключу экземпляра целевой модели. Проверка на $ owner выполняется только для удаленного метода, в пути которого есть ': id', например, GET /api/users/:id.

  1. Убедитесь, что accessToken вы предоставляете является владельцем id из user ты ищешь.
  2. Если вы не уверены, попробуйте заменить:"principalId": "$owner" с "principalId": "$authenticated", тогда вы узнаете, если это ваша проблема.
Другие вопросы по тегам