2017-01-09 10 views
0

ユーザ名がデータベースにない場合、ユーザを登録ページにリダイレクトするためにDefaultAuthenticationFailureHandlerを拡張しました。最初の部分は正常に動作します。 ユーザー名がデータベースに存在する場合、コントローラから、デフォルトの動作、つまりログインエラーメッセージでログインページにリダイレクトする必要があります。なぜそれはリダイレクトを発行していないのですか?認証失敗ハンドラが応答を返しませんでした

namespace UserBundle\Redirection; 

use Symfony\Component\Security\Core\SecurityContext; 
use Symfony\Component\DependencyInjection\ContainerInterface; 
use Symfony\Component\HttpFoundation\RedirectResponse; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\Routing\RouterInterface; 
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; 
use Symfony\Component\Security\Core\Exception\AuthenticationException; 
use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface; 
use Symfony\Component\Security\Http\Authentication\DefaultAuthenticationFailureHandler; 
use UserBundle\Controller\SecurityController; 

class AfterLoginFailureRedirection extends DefaultAuthenticationFailureHandler 
{ 
    /** 
    * @var \Symfony\Component\Routing\RouterInterface 
    */ 
    private $router; 
    /** 
    * @var \Symfony\Component\DependencyInjection\ContainerInterface 
    */ 
    private $container; 



    public function setRouter(RouterInterface $router) 
    { 
     $this->router = $router; 
    } 

    public function setContainer(ContainerInterface $container) 
    { 
     $this->container=$container; 

    } 


    /** 
    * @param Request $request 
    * @param AuthenticationException $token 
    * @return RedirectResponse 
    */ 
    public function onAuthenticationFailure(Request $request, AuthenticationException $exception) 
    { 


     //$request = $this->container->get('request'); 
     $token=$exception->getToken(); 
     $username=$token->getUsername(); 
     //$username = $request->request->get('email'); 
     $user = $this->container->get('fos_user.user_manager')->findUserByUsername($username); 

     if(!$user) { 
      $url=$this->container->get('router')->generate('fos_user_registration_register'); 
      return new RedirectResponse($url); 
     } 
     else 
     { 
      parent::onAuthenticationFailure($request,$exception); 
     } 
}} 

答えて

1

あなたは

正しいコードがあるべきあなたの他の場合には何も返さない:

else { 
    return parent::onAuthenticationFailure($request,$exception); 
} 
関連する問題