Реализация управления правами в дизайне классов
Я должен сделать проект, где будет много пользователей, которые будут использовать приложение. Пользователи могут принадлежать либо пользователям, руководителю или администратору. Каждая группа пользователей имеет свои права. Все данные будут храниться в базе данных.
Сейчас я занимаюсь разработкой классов, и я не знаю, нужно ли мне создавать права как класс сам по себе или мне просто нужно следить за группой пользователей, а затем просто запрещать или разрешать доступ к операциям CRUD в базе данных.
Что было бы хорошим способом реализовать право, которое относится к пользователю или группе?
1 ответ
Дизайн классов, которые отвечают вашим бизнес-требованиям. Я представляю себе некоторые классы с интерфейсом пользователя, которые позволяют настраивать экран пользователя. В конце базы данных я не знаю, есть ли у "прав есть пользователи" или "у пользователей есть права"; дизайн для вашей бизнес-модели. Конечно, вам понадобится код grunt для отображения информации из БД.
разработать право как класс сам по себе или...
Зависит от того, насколько сложен этот класс.... Я бы сказал, UserGroup
класс будет иметь List
прав, будь то совокупность сложных объектов или просто перечисления. Если все, что нужно вашей бизнес-модели, это спросить "какие права имеет Боб?" тогда список перечислений звучит хорошо для меня. Альтернативой перечислению является Right
базовый класс, подкласс для каждого права. Слишком много работы для такого тривиального использования, ИМХО.
Если вы не уверены, какой путь выбрать, создайте отдельный класс, который инкапсулирует Список прав. "API", который он предоставляет остальной части вашего приложения, не изменится, если / когда вы перейдете от перечислений к Right
класс, спина и четвертый.