Логическая точка застревания.Я строю простой ACL, и я просто в замешательстве.Я просто пытаюсь сделать это правильно.
Возьмем пример простой ACL на основе модели.
Таблица управления пользователями tbl_user
id | userid |
-------------
1 | nabin |
2 | suman |
Другая таблица для управления группами tbl_group
id | groupname |
-----------------
1 | admin |
2 | member |
3 | editor |
4 | moderator |
Еще одна таблица для ведения групп и пользователей.tbl_roles
id | userid | groupid
-----------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 2
4 | 2 | 3
5 | 2 | 4
Теперь таблица для управления доступом tbl_acl
id | groupid | appresourceid
----------------------------
1 | 3 | 1
В этой таблице я буду хранить список запретов, потому что список запретов определенно будет короче доступасписок.
Теперь, согласно примеру groupid:3 (editor)
, было отказано в ресурсе 1 (предположим, что это область администрирования).
Но, если вы берете userid: 2(suman)
, тогда они editor
и moderator
.Согласно правилу tbl_acl
, editor
должно быть отказано, тогда как moderator
должно быть разрешено.
Должен ли он иметь доступ к ресурсу или ему должно быть отказано? Разрешено ПЕРВЫЙ или Запрещено ПЕРВЫЙ.Какой из них должен быть приоритетным?
Некоторые способы просмотра этого
- Хотя пользователю отказано в качестве редактора, ему как модератору разрешен доступ кarea.
- Несмотря на то, что модератору разрешен доступ к ресурсу, все редакторы ограничены.
- Не забывайте, что пользователь тоже
member
.Так что, если мы расставляем приоритеты над разрешением над отказом.Участник будет иметь доступ в качестве модератора.Если только член не заблокирован тоже
PS Мне хорошо известно, что эта тема является дискуссионной.Таким образом, факты будут оценены (не говоря не) за мнения и догадки.