Обычно роли не моделируются как классы, а просто являются строками. Когда пользователь аутентифицируется, ряд этих строк связывается с Security principal
пользователя.
Эти роли могут быть запрошены в коде, например, в веб-слое через HttpServletRequest#isUserInRole
, в модуле EJB через SessionContext.isCallerInRole
и т. д. Существуют также аннотации, которые объявляют эту зависимость от ролей.
Если вы хотите использовать существующую структуру безопасности и ролей, вам нечего проектировать, кроме определения ролей и предоставления модуля входа в систему, который может получить набор ролей для пользователя, прошедшего проверку подлинности.
Для этой последней вещи вам, возможно, придется что-то придумать, но не обязательно. Если вы храните своих пользователей в службе каталогов (например, LDAP), вы можете просто использовать модуль входа LDAP. Большинство серверов приложений или контейнеров сервлетов (таких как JBoss AS, Glassfish, Tomcat и т. Д.) Предоставляют их по умолчанию. Если ваши пользователи находятся в БД, подойдет простая таблица с внешним ключом для пользователя в одном столбце и именем роли в другом столбце. Затем вы можете использовать модуль входа в БД, который использует простой запрос для получения ролей.