Я использую loopback для создания простого API для сайта SPA. Я хочу, чтобы мои права как можно более простой, так что я в конечном итоге со следующей моделью ACLloopback ACL для модели пользователя
- всех разрешения запрещены по умолчанию
- некоторые методам в нескольких моделях разрешены для всех
- всех методы разрешено для любого авторизованного пользователя
это, очевидно, будет работать, если я создам несколько пользователей, и никто больше не сможет создавать или изменять пользователей. Поскольку я не могу явно изменять разрешения для встроенной модели User
, я создал модель admin
, которая расширяет User
. Затем я установил значение public
модели User
в значение false. Я установил следующие правила ACL
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW",
"property": "login"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW"
}
, как я вижу, он должен запретить любой самовольных доступ пользователей к любым другим, чем login
методам.
К сожалению, это не так, как это работает, кто-либо еще может POST для пользователей и создавать новых пользователей. Я предполагаю, что правила ACL не применяются к унаследованной модели, поэтому здесь применяются правила для User
. Поэтому я вернусь к квадрату, я не могу либо изменять разрешения User
, либо переопределять их.
Какие у меня варианты? Невозможно ли предотвратить создание новых пользователей?