Как обрабатывать разные роли с разными привилегиями в PHP?

Я хотел бы знать, как мы можем создавать разные «роли пользователей» для разных пользователей в PHP. пример:

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

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

Зрители могут просматривать только те данные, которые были добавлены в БД работниками, менеджерами и администраторами.

Хотя лучше использовать разные сеансы, например:

$_SESSION['admin']
$_SESSION['manager']
$_SESSION['worker']
$_SESSION['viewvers']

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


person user261002    schedule 24.05.2010    source источник


Ответы (3)


Зависит от общей схемы вещей (надеюсь, вы все это поняли, лол). Как правило, у пользователей есть идентификатор того, на каком уровне они находятся. Например, поле «статус» или «тип».

$_SESSION['loggedInUser']['type']

этот тип обычно является числовым. 1 может быть обычным пользователем, 2 может быть модератором, 3 админом и т. д.

Остальное зависит от того, как вы управляете этим в своем коде. Такие фреймворки, как cakephp, предоставят вам доступ к вошедшему в систему пользователю через их объект аутентификации, и вы можете получить любые данные, какие захотите :)

я знаю, что это очень поверхностно, но, увы, вопрос был также. Надеюсь, поможет :)

person Dan Heberden    schedule 24.05.2010

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

0 = guest, no privileges
1 = standard user, read-only access
9 = power user, read/write access
10 = admin, all access

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

В этой ситуации вы можете проверить свою переменную сеанса (конечно, после того, как пользователь аутентифицируется), скажем, $_SESSION['user_level'];

person JYelton    schedule 24.05.2010

вы должны сыграть роль, как в $_SESSION['Role'], и заполнить ее при входе в систему. затем каждый раз проверяйте, есть ли у этой роли права на выполнение операции.

person Andrey    schedule 24.05.2010