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

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

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

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

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

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

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

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир