@Evgeniuster

Где проверять авторизацию пользователя?

Здравствуйте!

Самописный движок MVC.
Нужно на странице показать разный контент для авторизованного и не авторизованного пользователя.
Где проверять авторизацию?

Вижу два варианта:
1. Проверяем в контроллере (авторизация есть) и когда передаем во вью, указываем вью, который для авторизованного.
А если вариантов таких страниц будет много? Или уровней пользователей будет несколько, с разным набором блоков для показа... Для каждого варианта делать свою вьюшку?

2. Проверяем во вью и уже там решаем показывать конкретный блок или нет.
Но это как бы не по фэншую перекладывать на вью логику... или нет?


Какой способ обычно используется?
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 4
@FanatPHP
Чебуратор тега PHP
Показывать или не показывать блок на странице, это логика отображения
Ответ написан
aleksejjjj
@aleksejjjj
Нет никакого "обычно", зависит от вашей логики страниц. Если страницы кардинально разные, то нормально будет сделать раздельные вьюшки и проверку выполнять в контроллере, возвращая нужную. Если вопрос в дополнительном блоке, то будет достаточно добавить проверку во вьюшку. Например в laravel/blade это выглядит так:
// Общий код
<div></div>

// Блок для любого кто вошёл
@auth
    <div>Я юзер</div>
@endauth

// Блок только для админов
@auth('admin')
    <div>Я админ</div>
@endauth

// Общий код
<div></div>
Ответ написан
dmitriylanets
@dmitriylanets
веб-разработчик
Иногда логика отображания может быть очень сложной, и вроде бы все просто есть контроллер, есть шаблон, есть данные. Подходов для решения может быть много, я бы выбрал следующий:
1. Контроллер принимает запрос от пользозователя и обращается к сервису для получения контента
2. Сервис контента, формирует контент но при этом проверяет права доступа, авторизиван не авторизован, дата,время, группа пользователя если атворизован, его пол и все что угодно. Отдает обратно контент согласно условиям.
3. Контроллер получив контент передает в шаблон.
Ответ написан
@necrodeflorator
Зависит от страницы.
Если это профиль пользователя, то логично его редиректнуть на форму авторизации - этим занимается контроллер, точнее контроллер должен вернуть RedirectResponse
Если это кусок хтмля в шапке сайта, то отображение - в простейшем случай в темлейте.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы