Не удается перенаправить в конструкторе в Symfony 4 - PullRequest
0 голосов
/ 01 октября 2018

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

Я должен контролировать доступ в базовом "UserboardController"".

У меня есть конструктор перед любыми методами:

class UserboardController extends Controller
{

    public function __construct() {

        $session = new Session();

        $uSession = $session->get('user');
        if (!isset($uSession)){
             return $this->redirectToRoute('logout');
        }
    }

Я пробовал много способов перенаправления и всегда получаю эту ошибку:

Call to a member function get() on null

Symfony покажет мнедве другие трассировки внутри redirectToRoute от ControllerTrait.php:

return $this->redirect($this->generateUrl($route, $parameters), $status);

и

return $this->container->get('router')->generate($route, $parameters, $referenceType);

Есть идеи, как можно просто перенаправить пользователя на маршрут выхода из системы?Это важный шаг, поскольку метод выхода из системы будет выполнять другие действия на основе файлов cookie перед выходом из системы и перенаправлением на форму входа.

Маршрут выхода из системы определен и работает, если пользователь обращается к нему по URL-адресу.

Спасибо

1 Ответ

0 голосов
/ 01 октября 2018

Прежде всего, если вы хотите получить доступ к сеансу, вы должны передать его в качестве аргумента и воспользоваться преимуществами автоматической проводки.Во-вторых, это не должно быть сделано в конструкторе контроллера.

В-третьих, это похоже на случай модуля безопасности Symfony.Symfony при правильной настройке вернет использование по умолчанию к /logout маршруту любого маршрута, который определен как logout route

Так что вам нужно сделать, это определить в security.yaml свои брандмауэры и определить в access_controlпуть, который должен быть под брандмауэром

Проверьте это, чтобы узнать больше ключей https://symfony.com/doc/current/security/form_login_setup.html

...