Как я могу ограничить доступ пользователей к объекту? - PullRequest
1 голос
/ 23 февраля 2010

Привет, Sitepoint волшебник,

Допустим, у нас есть приложение администратора, в котором есть несколько пользователей и различные объекты. То, что я хотел бы сделать, это контролировать доступ внутри самого объекта, то есть он будет вести себя так, как для одного типа пользователей, так и для других пользователей. Например ...

Директор Майк может переопределить дату регистрации пользователя Sally. Можно предположить, что Майк мог установить любую дату как в прошлом, так и в будущем. Кроме того, у нас есть пользователь платежной ведомости Стив, который также может изменять дату регистрации Салли, но только для дат в прошлом вплоть до (например) одного года назад. Чтобы оживить ситуацию, у нас есть менеджер по персоналу Мэри, который также может изменить дату регистрации Салли, но только для дат, начиная с 23 июня 2007 года и до одного месяца ...

Как можно запрограммировать ограничения доступа, чтобы на внешнем интерфейсе элемент управления формы ограничивался минимальной и максимальной датами, а в бэкэнде проверяющий проверяет введенную дату, чтобы убедиться, что она попадает между этими датами? Очевидно, мне нужно было бы настроить минимальную и максимальную даты для каждого типа пользователя. Другие объекты могут иметь другие параметры - например, максимальная сумма в поле скидки или дни недели за сверхурочную работу.

Я задавал этот вопрос по-разному, но каждый раз, когда я зацикливался на реализации. В настоящее время я разрабатываю его как веб-приложение php / MySQL, но мысли и комментарии с других платформ очень приветствуются! На этот раз я рассматриваю основные принципы, поэтому не имеет значения, какой у вас опыт, если у вас есть идеи, пожалуйста, дайте мне знать! Как вы вообще называете этот тип контроля доступа ...?

Ответы [ 2 ]

1 голос
/ 23 февраля 2010

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

Что касается вопросов безопасности, убедитесь, что пользователи не могут получить доступ к различным XML-файлам.

Edit:
Поскольку вы используете MySQL, вы можете сделать что-то вроде этого.
Допустим, у вас есть таблица пользователей с полями: UserId, UserName, RestrictionId.
И с таблицей ограничений, которая выглядит следующим образом: RestrictionId, FieldName, FieldCondition.

Таким образом, в вашем приложении php, когда пользователь проходит аутентификацию, вы можете выбрать правильные «Ограничения» на поле и применить их в своем коде. Если случается, что у вас есть несколько полей, требующих разных правил, вы можете просто добавить их с правильным RestrictionId.

Этот дизайн БД далек от совершенства, я уверен, что вы можете сделать лучше

0 голосов
/ 24 февраля 2010

Так как вы уже используете MySql db. Вы можете сохранить детали таблицы UserRole Master в самой БД. Загрузите данные роли пользователя на основе имени входа, после чего вы сможете легко проверить изменения, внесенные пользователем соответствующим образом.

...