Я следовал этому уроку 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 .