2010-02-23 5 views
1

Hi Sitepoint wizard people,Как ограничить доступ пользователей к объекту?

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

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

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

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

+0

Сделать, чтобы ответить, если ваша проблема решена. – ALOToverflow

ответ

1

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

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

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

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

Эта конструкция DB далека от совершенства, я уверен, что вы можете сделать лучше

+0

У вас есть ссылки на пример того, как XML-файл может быть структурирован? Я бы, вероятно, использовал базу данных, но принципы те же. Спасибо – boatingcow

+0

Добавлен пример для БД. – ALOToverflow

+0

Спасибо за ваше редактирование - я бы чувствовал себя более комфортно, если бы мог увидеть что-то в действии где-нибудь - знаете ли вы о каких-либо скриптах, фреймворках, приложениях, которые уже делают это, чтобы я мог проверить это? – boatingcow

0

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

+0

Спасибо за ваш ответ - есть ли у вас какие-либо указания относительно того, как данные роли могут быть сохранены? Я привык к логическому типу ALLOW/DENY в моем db, так как я могу сохранить как ALLOW/DENY, так и другое как «-1 year», «2007-06-23», «<50» в моем db ? – boatingcow