このチュートリアルに従って、ログイン後の最後のページへのリダイレクトを設定しました: http://www.reecefowell.com/2011/10/26/redirecting-on-loginlogout-in-symfony2-using-loginhandlers/
私のservices.yml
parameters:
assinatura_user_security.component.login_success_handler.class: Assinatura\UserBundle\Component\LoginSuccessHandler
services:
assinatura_user_security.component.login_success_handler:
class: %assinatura_user_security.component.login_success_handler.class%
arguments: [@service_container, @router, @security.context]
tags:
- { name: 'monolog.logger', channel: 'security' }
security.yml
form_login:
login_path: usuario_login
check_path: usuario_login_check
success_handler: assinatura_user_security.component.login_success_handler
私のクラス:
<?php
namespace Assinatura\UserBundle\Component;
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Router;
class LoginSuccessHandler implements AuthenticationSuccessHandlerInterface
{
protected $router;
protected $security;
public function __construct(Router $router, SecurityContext $security)
{
$this->router = $router;
$this->security = $security;
}
public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
$referer_url = $request->headers->get('referer');
$response = new RedirectResponse($referer_url);
return $response;
}
}
そしてエラー:
キャッチ可能な致命的なエラー: Assinatura\UserBundle\Component\LoginSuccessHandler::__construct() に渡される引数 1 は、Symfony\Component\Routing\Router のインスタンスである必要があり、指定された appDevDebugProjectContainer のインスタンスであり、/var/www/assinatura/app/cache で呼び出されます/dev/appDevDebugProjectContainer.php の 131 行目で、/var/www/assinatura/src/Assinatura/UserBundle/Component/LoginSuccessHandler.php の 18 行目に定義されています
私のsymfonyのバージョンは2.2です
ログインしていないときに同じページにリダイレクトしたい