Политика доступа в PHP и MySQL - PullRequest
       1

Политика доступа в PHP и MySQL

0 голосов
/ 11 августа 2009

Я немного запутался в том, как настроить мой стол. У меня есть три роли, которые можно выбрать с помощью флажка. При регистрации .... если пользователь выбирает одну и две ... тогда эти страницы должны быть видны, если он выбирает одну и три, то эти страницы и если выбирает кого-либо из них, то только эти ...

Давайте назовем страницу 1 как управление клиентом Page 2 Управление счетами Страница 3 Просмотр отчета

Если у меня есть отдельные поля для этих трех или одного, достаточно.

Спасибо

1 Ответ

2 голосов
/ 11 августа 2009

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

Вы можете сделать две вещи IMO:

поле SET

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

М: М стол

Создание таблицы M: M (многие ко многим), которая будет связывать роли с пользователями. Это решение не требует изменения базы данных, если вы хотите добавить другую роль

CREATE TABLE `users` (
    id INT AUTO INCREMENT,
    login VARCHAR(100) NOT NULL,
    password CHAR(32) NOT NULL,
    PRIMARY KEY (id)
)

CREATE TABLE `roles` (
    id INT AUTO INCREMENT,
    name VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
)

CREATE TABLE `user_roles` (
    user_id INT,
    role_id INT
)

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

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