В контроллере или модели проверять права доступа? Имеем роутер и структуру сайта вида url/controller/action
К адресу вида url / user / add (добавить юзера) должны иметь доступ все
К адресу вида url / user / 11 (смотреть юзера) только сам юзер
К адресу вида url / user / del (удалить юзера) только администратор сайта
Если это не фреймворк где реализованы RBAC и прочие фишки а самописная система - где корректнее проверять права доступа к этой странице?
Тут есть 2 уровня проверки - это гость / юзер (видно по сессии), а если юзер то надо в БД сходить что бы узнать его права, значит это должна делать модель (контроллер не должен ходить в БД)?
Привлекает ещё концепция middleware из laravel где что-то можно проверить ещё до того как определён нужный контроллер, но тут не понятно где сохранить результаты проверки запроса посредником, передавать во все создаваемые объекты дальше явно, или класть в сессию?

21 Авг 2019 в 07:01
180 +1
0
Ответы
1

В самописной системе, где используется структура URL вида url/controller/action, корректнее проверять права доступа к страницам в контроллере.

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

Модель должна использоваться для работы с данными и не должна проводить проверку прав доступа. Например, она может вернуть информацию о пользователе (его права), но сама не должна проводить проверку на возможность доступа к определенной странице.

Концепция middleware из Laravel также может быть полезной для реализации проверки прав доступа. Middleware можно использовать для предварительной проверки и фильтрации запросов перед тем, как они попадут в контроллеры. Результаты проверки посредником можно сохранить в сессии или передавать объектам дальше явно, в зависимости от требований вашей системы.

В целом, важно разделить функциональность модели (работа с данными) и контроллера (обработка запросов и проверка прав доступа), чтобы обеспечить четкую структуру и легкость поддержки вашей системы.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 91 855 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир