Данные сеанса Symfony - PullRequest
       1

Данные сеанса Symfony

0 голосов
/ 28 декабря 2018

Я следовал этому уроку https://symfony.com/doc/current/security/form_login_setup.html и использую новейшую версию (4.2.x), но, похоже, приложение никогда не устанавливает значение сеанса, описанное здесь:

https://symfony.com/doc/current/security/form_login_setup.html#redirecting-to-the-last-accessed-page-with-targetpathtrait

Где и как мне это установить?В документации сказано, что он будет установлен автоматически, но когда я проверяю сеанс в консоли отладки - ничего подобного не происходит.Пользователь / администратор теперь будет перенаправлен только на заданные пути, а не на запрошенные страницы (например, somecontroller / action / id)

security.yaml

    firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        anonymous: true
        guard:
            authenticators:
                - App\Security\LoginFormAuthenticator

        logout:
            path:   app_logout
            target: /
        remember_me:
            secret:   '%kernel.secret%'
            lifetime: 604800 # 1 week in seconds
            path:     /
            secure: true
            name: REMEMBERUSER
        form_login:
            use_referer: true

LoginFormAuthentificator.php

    public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
    if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
        return new RedirectResponse($targetPath);
    }

    if ($this->security->isGranted('ROLE_ADMIN')) {
        $path = 'adresses_index';
    } elseif ($this->security->isGranted('ROLE_USER')) {
        $path = 'users_profile';
    }

    return new RedirectResponse($this->router->generate($path));
}

Также я попробовал это сделать, установив ключ провайдера в main и установив скрытое поле ввода с помощью _target_path в форме входа в систему.И то и другое не приводит к тому, что пользователь открывает ссылку, которая ограничена, и после входа в систему перенаправляет пользователя на этот путь.

dumping

$ this-> getTargetPath ($ request->getSession (), $ providerKey)

возвращает null .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...