@maks78945

Как праивльно реализовать права доступа на просмотр?

Как реализовано сейчас:
Есть таблица в бд, в которой указана информация о менеджере, пароль и права доступа, на каждое право доступа есть своя ячейка, на данный момент уже получилось больше 100 ячеек на права доступа.
При авторизации вытаскивается все права доступа и каждое право доступа записывается в сессию $_SESSION, и при загрузке проверяется наличия значения в переменной $_SESSION.
Ошибки которые я вижу, в бд уже очень много колонок, что не правильно, при добавлении или изменении прав доступа, необходимо перелогинится.

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

Подскажите, правильно ли я думаю реализовать это, или необходимо делать по другому принципу?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
а каждое право доступа есть своя ячейка,

выносите в отдельную таблицу, а не ячейки плодите.

Вот здравая и гибкая структура таблиц для RBAC
5c66af5900a70815310086.png

В ростом выражении как у вас сейчас, только в две таблицы, это будет
table1: id | username | ...
table2: user_id | rule_name

Кэшировать права, если их много конечно можно, но лучше не использовать сессию для этого. Сессия просто имеет id пользователя, а права могут рядом лежать в кеше, так что при смене прав, просто сбрасывается кеш, а не авторизация пользователя. Но так как у Вас 1 таблица - то большой вопрос, а быстрее ли кеш, возможно тут запрос в бд будет быстрее (выборка прав по id). Это когда сложные запросы из-за многих таблиц, тогда есть смысл, а так не вижу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы