Перенаправление на вход вместо 403

Я использую Sulu CMF и у меня есть специальный контроллер для процесса продаж на веб-сайте. Только вошедшие в систему пользователи с определенным контекстом безопасности могут получить доступ к страницам, обслуживаемым контроллером, поэтому контроллер реализует SecuredControllerInterface.

class SaleController extends AbstractController implements SecuredControllerInterface
{
  /* ... */

  public function getSecurityContext() { 
    return 'private_sale.sale.purchase';
  }

  /* ... */
}

Когда вошедший в систему пользователь просматривает страницу, управляемую этим контроллером, и если у пользователя нет соответствующих разрешений, сервер отвечает страницей 403.

Есть ли способ перенаправить пользователя на другую страницу вместо возврата 403?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
105
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это было бы неправильное поведение.

403 означает «не авторизовано», что переводится как «Вы вошли в систему, и я знаю, кто вы»; но у вас нет доступа к этому контенту.

401 означает «не аутентифицирован», что переводится как «Я не знаю, кто вы», вам необходимо войти в систему, чтобы продолжить.

Только во втором случае имеет смысл перенаправить на страницу входа.

Вы хотите перенаправить на вход в систему на 401 и показать «не авторизовано» на 403.

Если неаутентифицированный пользователь обращается к контроллеру, а вы проверяете там авторизацию, то у вас другая проблема, и вам следует настроить так, чтобы только полностью аутентифицированный пользователь мог получить доступ к странице.

Тогда неаутентифицированный пользователь получит 401 (и будет перенаправлен на страницу входа непосредственно Symfony), а аутентифицированный, но не авторизованный, получит правильный ответ 403.

И если вы хотите, на своей странице 403 вы можете показать все, что уместно. Вы можете настроить его, используя эти инструкции: https://docs.sulu.io/en/2.5/cookbook/custom-error-page.html

Спасибо, вы абсолютно правы. Я тестировал с уже вошедшим в систему пользователем без каких-либо разрешений. Моя вина, я обновил вопрос. Итак, 403 правильный! Но есть ли способ уловить эту ситуацию в контроллере и отреагировать перенаправлением или всплывающим окном?

Mario A 22.02.2024 14:29

Что вам следует сделать, так это настроить страницу ошибки напрямую. Зачем вообще перенаправлять? docs.sulu.io/en/2.5/cookbook/custom-error-page.html Куда бы вы перенаправили пользователя?

yivi 22.02.2024 14:33

Другие вопросы по теме