В приложении уровня предприятия как должны быть разработаны роли? - PullRequest
1 голос
/ 07 августа 2011

Я создаю приложение уровня предприятия, где есть разные типы пользователей. Обычный пользователь, администратор организации, супер администратор. У каждого пользователя разные роли.

  1. Обычный пользователь: доступ к функциональности основного приложения.

  2. Администратор организации: создайте пользователя и его организацию.

  3. Суперпользователь: утвердить пользователя и организацию

Как эта архитектура должна быть спроектирована? Должны ли роли быть оформлены как отдельные классы. Или используя наследование разных типов пользователей для создания ??

Ответы [ 2 ]

1 голос
/ 07 августа 2011

Обычно роли не моделируются как классы, а просто являются строками. Когда пользователь аутентифицируется, ряд этих строк связывается с Security principal пользователя.

Эти роли могут быть запрошены в коде, например, в веб-слое через HttpServletRequest#isUserInRole, в модуле EJB через SessionContext.isCallerInRole и т. д. Существуют также аннотации, которые объявляют эту зависимость от ролей.

Если вы хотите использовать существующую структуру безопасности и ролей, вам нечего проектировать, кроме определения ролей и предоставления модуля входа в систему, который может получить набор ролей для пользователя, прошедшего проверку подлинности.

Для этой последней вещи вам, возможно, придется что-то придумать, но не обязательно. Если вы храните своих пользователей в службе каталогов (например, LDAP), вы можете просто использовать модуль входа LDAP. Большинство серверов приложений или контейнеров сервлетов (таких как JBoss AS, Glassfish, Tomcat и т. Д.) Предоставляют их по умолчанию. Если ваши пользователи находятся в БД, подойдет простая таблица с внешним ключом для пользователя в одном столбце и именем роли в другом столбце. Затем вы можете использовать модуль входа в БД, который использует простой запрос для получения ролей.

1 голос
/ 07 августа 2011

На уровне базы данных у вас есть таблица пользователей, таблица ролей и таблица ролей пользователей, которые определяют, какие пользователи имеют какие роли.

На уровне класса у вас есть пользовательский класс, в котором список ролей представлен в виде свойства.

Вы можете добавить методы в пользовательский класс, например, IsAdmin или IsSuperUser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...