Я использую loopback framework.RoleMapping.USER или RoleMapping.ROLE & ACL
Мне не очень понятно, когда использовать RoleMapping со статическими ролями и ACL, также после прочтения документации here и here.
У меня есть сценарий загрузки, в который я вставляю некоторые основные статические роли в мое приложение (admin, approver, validator и т. Д.), И я использую эти роли в ACL.
Кажется мне, что, когда я объявляю о роли пользователя, я должен использовать RoleMapping.USER
:
const approver = yield app.models.User.create({
email: '[email protected]',
password: 'secret-apprpver-123',
status: 'active',
emailVerified: true
});
const roleApprover = yield app.models.Role.findOne({
where: {name: 'approver'}
});
yield app.models.RoleMapping.create({
principalId: approver.id,
principalType: app.models.RoleMapping.USER,
roleId: roleApprover.id
});
Хотя в ACL я должен использовать RoleMapping.ROLE
:
{
"principalType": "ROLE",
"accessType": "EXECUTE",
"principalId": "approver",
"permission": "ALLOW",
"property": "setApprove"
}
Но это не очень понятно, , с большой головной болью каждый раз, когда я должен отлаживать ее, какую-то темную магию и молюсь каждый раз, когда мне приходится управлять новыми ролями или новым ACL.
Есть ли кто-нибудь, кто может объяснить мне, как это сделать?
В первом блоке кода вы добавляете пользователя к роли, во втором блоке (ACL config) вы позволяете роли принимать действие над моделью. Эти два действия работают в унисон, чтобы обеспечить авторизацию и аутентификацию соответственно. Какую часть вы не понимаете точно? – jakerella
при первом взгляде я бы использовал тот же самый 'mainType' для обоих .. ваши объяснения кажутся хорошими, но можете ли вы немного расширить его? – nkint