В настоящее время мы проектируем a Система ролей и разрешений пользователей в нашем веб-приложении (ASP.NET), и, похоже, у нас есть несколько случаев , которые не подходит в рамках классического управления доступом на основе ролей (RBAC) . Я опубликую несколько вопросов, каждый из которых посвящен конкретному делу, это первый пост.
У нас есть следующий case : не разрешать пользователю просматривать определенную страницу, если пользователь живет в определенном городе. Это простой случай, который закодирован следующим образом:
if (User.City == “Moscow”)<br>
// Allow the user to view the page.<br>
else<br>
// Do not allow the user to view this page.
Хотя этот случай очень прост и понятен, он не имеет ничего общего с RBAC.
В StackOverflow кто-то назвал это Контроль доступа на основе атрибутов .
В соответствии с классическим RBAC, кажется, что этот случай должен быть сконструирован так: ввести разрешение «Город, в котором живет человек» , это разрешение будет иметь собственность City. Затем создайте роль, добавьте к ней разрешение типа «Город = Москва» и назначьте роль пользователю. Выглядит крайне громоздким .
Вопрос допустимо ли вводить такие подходы, не относящиеся к RBAC, к нашей системе разрешений - это нарушает дизайн или нет?
Это может показаться примитивным вопросом, но мы обнаружили, что большинство приложений используют чистый RBAC, и мы начали думать, что мы можем делать что-то не так.
Спасибо.