Реализация ACL для моего PHP-приложения - PullRequest
8 голосов
/ 11 декабря 2010

В моем приложении RealEstate PHP есть следующие группы пользователей:

Администраторы, Агенты модераторов

Я хочу указать следующие разрешения для следующих пользователей.

Администраторы ->

  • Может создавать модераторов,
  • Может создавать агентов,
  • Может вставлять свойства,
  • Может обновлять свойства,
  • Может удалять свойства

Следовательно, администратор будет вкратце иметь все привилегии, администратор здесь будет superAdmin

Я хочу назначить ограниченные привилегии модератору и, следовательно,агенты.

я запутался в том, как создать для этого базу данных, а также в том, как реализовать ее в моем приложении PHP.

спасибо

Ответы [ 2 ]

13 голосов
/ 11 декабря 2010

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

Контроль доступа на основе ролей

http://www.tonymarston.net/php-mysql/role-based-access-control.html

http://www.sqlrecipes.com/database_design/fine_grained_role_based_access_control_rbac_system-3/

http://www.sitepoint.com/forums/showthread.php?threadid=162027

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

и одна таблица для пользователей

связывает разные роли с разными пользователями, связывая две таблицы. и что-то вроде этого ......

0 голосов
/ 11 декабря 2010

Способ, которым я делал это в прошлом, состоял в том, чтобы создать таблицу пользователей в базе данных, которая имела уровень доступа (Администратор, Модератор и агенты).

Тогда, если у вас есть система меню, выполните проверку, чтобы узнать, какие привилегии необходимы для каких ссылок ... Администраторы будут видеть все ссылки, Модератор будет видеть только те ссылки, которые он / она должен, а агенты будут видеть только они должны видеть.

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

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

Надеюсь, это поможет, Mike

...