По моему требованию, пользователь получает электронное письмо с URL-адресом, и после того, как он щелкнет, пользователь перейдет к URL-адресу через процесс аутентификации.
Таким образом, чтобы перенаправить пользователя на URL-адрес, по которому я нажал, я использую метод, упомянутый здесь ( Передача параметров при перенаправлении ), где я намерен передать URL-адрес перенаправления в качестве параметра, как
login_path: %accounts_host%/signin?redirect=%need_current_url_here%
в пределах security.yml
и захватить как таковой $url=$_GET['redirect'];
и обеспечьте перенаправление соответственно.
Мой вопрос, как я могу получить доступ к текущему URL из security.yml
так что я могу прикрепить его к login_path
,
Я довольно новичок в этом, и любой пример / документ очень ценится. 🙂
PS
Аутентификация выполняется в другом приложении symonfy2, и в этот момент я не могу использовать referer
команда, поскольку это будет нулевым. Вот почему я пытаюсь передать вам URL перенаправления в качестве параметра. 🙂
Я бы предложил использовать точку входа и обработчик успеха.
security.yml:
firewalls: # Required
# Examples:
somename:
entry_point: some.service.id
...
form_login:
...
success_handler: some.service.id
SuccessHandler (источник):
<?php
namespace StatSidekick\UserBundle\Handler;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Http\Authentication\DefaultAuthenticationSuccessHandler;
use Symfony\Component\Security\Http\HttpUtils;
class AuthenticationSuccessHandler extends DefaultAuthenticationSuccessHandler {
public function __construct( HttpUtils $httpUtils, array $options ) {
parent::__construct( $httpUtils, $options );
}
public function onAuthenticationSuccess( Request $request, TokenInterface $token ) {
// Create if necessary a redirect response otherwise use the parent one with
// $response = parent::onAuthenticationSuccess( $request, $token );
return $response;
}
}
Точка входа (источник):
Когда пользователь вообще не аутентифицирован (т.е. когда хранилище токенов
еще не имеет токена), точка входа брандмауэра будет
«начать» процесс аутентификации. Точка входа должна реализовывать
AuthenticationEntryPointInterface, который имеет только один метод: start () …
Других решений пока нет …