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

0

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

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

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

Спасибо

Теги:

1 ответ

2
Лучший ответ

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

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

Поле SET

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

Таблица M: M

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

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
)

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

  • 0
    +1 для таблицы M: M, так как я решил эту проблему с тем же подходом

Ещё вопросы

Сообщество Overcoder
Наверх
Меню