@makar04

Как реализовать проверку прав пользователя на сайте, для изменения определённой страницы?

Доброго времени суток! Занимаюсь изобретением своего велосипеда, и стал вопрос, как реализовать проверку прав пользователя для редактирования определённой страницы! К примеру: Авторизованый пользователь создаёт на сайте блог, в этом блоге он может постить свои статьи. Как правильно организовать проверку, является ли пользователь администратором блога и если он администратор, то разрешить ему делать всё что душе угодно в данном блоге? Так же в блоге будут присутствовать модераторы и подписчики и у каждого будут разные права! Сейчас для теста реализовал следующим образом. В БД имеются таблицы blog и permission в табл. blog хранится непосредственно вся инфа о блоге "описание, его id и тд.", в таблице permission хранится id блога, id пользователя и роль пользователя, в которой роли хранятся в виде чисел 1, 2, 3 (1 = администратор, 2 = модератор, 3 = подписчик). При загрузке блога идет запрос в БД и возвращается одно из значений роли пользователя. В общем я понимаю, что это очень коряво, поэтому и интересует вопрос как всё таки правильно реализовать эту проверку, возможно как то можно единожды достать права для всех блогов пользователя и положить их в сессию, что бы каждый раз не обращаться к БД? Может есть какие то статьи по это му поводу или хотя бы натолкнете на правильную мысль? Заранее спасибо!
  • Вопрос задан
  • 2022 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Silm
Лучше всего использовать готовые системы для управлениями аутентификацией, ролями, авторизацией, правами..
https://cartalyst.com/manual/sentry/2.1
Если к вашему велосипеду возможно что-то прикрутить...

В целом у вас подход правильный. В БД храним роли, права. В коде определяем есть ли право на действие. Чтобы не было постоянных запросов к БД кешируем в память (Memcached/Redis).

Главное чтоб реализация не оказалась дырявой.
Ответ написан
Ваш ответ на вопрос

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

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