За последние 24 часа нас посетили 7727 программистов и 657 роботов. Сейчас ищут 109 программистов ...

Контроль авторизованного на уровне роутера

Тема в разделе "PHP для профи", создана пользователем Вероломство, 7 апр 2021.

  1. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    358
    Симпатии:
    12
    Как делал раньше? Два метода: guestArea() и userArea() тупо помещались в начало конструктора или экшена (заранее зная их уровень доступа), в методе производилась проверка - если есть $this->user, а метод или класс предназначен для гостя, то редиректим на главную страницу для юзера (примерно так) и наоборот если юзера нет а метод или класс для юзера, то редиректим на главную для гостя, да и ещё и главная тупо разбита ифом: гость или юзер с выдачей соответствующего контента (на одной и той же странице либо подменой вида в одном и том же шаблоне).

    Сейчас все потихоньку усложняется: пытаюсь сделать контроль на уровне роутера, то есть идёт тупо проверка наличия сессии юзера и в роутере подменяется неймспейс, а именно ему дописываем имя модуля (папки семества контроллеров) user или guest.

    Так вот вопрос: если я ЮЗЕР и нахожусь по адресу /page, то у меня подключен неймспейс (например) - app\controllers\user\PageController, теперь я грохнул сессию, обновляю страницу и мне вылетает ошибка (для админа) - Контроллер app\controllers\guest\PageController не найден.

    То есть поясню: у меня ошибку ловит обработчик и выдаст 404 (для пользователя) со ссылкой на главную, то есть пользун так и так попадёт на главную, но сначала увидит отлуп и ему нужно будет нажать кнопку. Это нормально так делать? Или надо искать пути именно плавного приземления пользуна на главную или гостя или юзера, если сменился его статус?

    p.s. И как наука смотрит на то, чтобы 404 автоматом редиректить на главную? :) У меня есть режим логирования ошибок, так что мне необязательно получать от пользователей сообщения о найденных ошибках, я это и так в логах увижу, а пользуна просто сразу приземлять на главную, так допустимо или там SEO косо смотрит на это?
     
    #1 Вероломство, 7 апр 2021
    Последнее редактирование: 7 апр 2021
  2. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    695
    Симпатии:
    129
    Нет, не нормально.
    Нажал "выход" - оказался на той же странице, но уже как гость. Если гость к ней доступа не должен иметь, выводить "доступ запрещен" и ссылка на главную.
     
    Вероломство нравится это.
  3. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    358
    Симпатии:
    12
    ну так у меня так и сделано

    не нужно ли его приземлять на главную соответственно его статуса, есть главная гостя, есть главная юзера, у меня он туда попадёт только после смены статуса, показа страницы ошибки и самостоятельного нажатия кнопки На главную

    а если автоматом буду его редиректить, как раньше проверками редиректил, но теперь со страницы ошибки сделать авторедирект? как на это наука смотрит
     
  4. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    695
    Симпатии:
    129
    То есть физически разные? Или выводится разное?
     
    Вероломство нравится это.
  5. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    358
    Симпатии:
    12
    и то и то)) у меня в модуле user и в модуле guest есть свой HomeController, они работают по пути /, потому что у меня шаблоны и виды для них разные, им только неймспейс дописывается относительно модуля



    я тут подумал что некорректно задал вопрос, вопрос скорее звучит так: считают ли ПС нерелевантными страницы с авторедиректом, то есть робот увидит что реально есть правильная страница 404 и на ней есть ссылка на главную, но как он смотрит на то, что на странице 404 стоит авторедирект на главную, например, с задержкой - 0? Это косяк?

    вот так наверное надо было мне задавать :)
     
  6. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    695
    Симпатии:
    129
    Он
     
    Вероломство нравится это.
  7. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    358
    Симпатии:
    12
    а если редирект не в html прописан будет?
    то есть страница с кнопкой на главную остаётся а редирект делается в другом месте
     
  8. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    695
    Симпатии:
    129
    От бота зависит. Кто его знает чего ему там накодили.
     
  9. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    358
    Симпатии:
    12
    тут скорее всего не то что ему накодили, а накодили ли ему проверку отображения 404 определённое время, может у меня пользун нервный и сразу нажмёт На главную - это и будет тот же самый редирект без задержки, кнопка то есть в html, жми когда хочешь получается )))