Когда речь заходит об авторизации, роли вступают в игру. Если модель плоская, то все просто. Пользователь обладает определенным набором привелегий и при запросе достаточно лишь проверить, что нужное право доступа присутствует в коллекции. Но как быть, если у пользователя могут быть разные наборы ролей для разных сущностей? Например, я обладаю ролью EDITOR
в посте в социальной сети, но имею только VIEWER
в другом. Также могут быть определены правила наследования. Если админ выдает дает мне роль EDITOR
, то я автоматически приобретаю привилегию VIEWER
. При этом, если я EDITOR
, роль ADMIN
у меня не появляется.
Как увязать все эти детали в коде и при этом не превратить продукт в большую кучу грязи? В рамках этой статьи я расскажу вам:
1. Как реализовать наследование ролей в Java?
2. Как протестировать полученную иерархию?
3. Как применить решение в рамках Spring Security?