2

ログアウト後、インデックスページにリダイレクトしたいのですが、FOSUserBundleでエラーが発生します

SecurityController.phpで

 <?php
      namespace ispg\Bundle\ChatBundle\Controller;
      namespace FOS\UserBundle\Controller;

      use Symfony\Bundle\FrameworkBundle\Controller\Controller;
      use Symfony\Component\DependencyInjection\ContainerAware;
      use Symfony\Component\Security\Core\SecurityContext;
      use Symfony\Component\Security\Core\Exception\AuthenticationException;

 class SecurityController extends ContainerAware
 {
     public function loginAction()
     {        
          $request = $this->container->get('request');
          /* @var $request \Symfony\Component\HttpFoundation\Request */
          $session = $request->getSession();
          /* @var $session \Symfony\Component\HttpFoundation\Session */
          $network = $request->get("network");

          // get the error if any (works with forward and redirect -- see below)
          if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
             $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
          } elseif (null !== $session && $session->has(SecurityContext::AUTHENTICATION_ERROR)) {
             $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
             $session->remove(SecurityContext::AUTHENTICATION_ERROR);
          } else {
             $error = '';
          }

          if ($error) {
              // TODO: this is a potential security risk (see http://trac.symfony-project.org/ticket/9523)
              $error = $error->getMessage();
          }

          // last username entered by the user
          $lastUsername = (null === $session) ? '' : $session->get(SecurityContext::LAST_USERNAME);

          //create the select tag for network selection
          require 'mnoNetworks.php';
          $selectHtml = "<select id=\"networks\">
                         <option value=\"\"> -- Select -- </option>";

          foreach($networks as $network){
             $selectHtml .= "<option value=\"".$network."\">".$network."</option>";
          }
          $selectHtml .="</select>";

          return $this->container->get('templating')->renderResponse('FOSUserBundle:Security:login.html.'.$this->container->getParameter('fos_user.template.engine'), array(
               'last_username' => $lastUsername,
               'error'         => $error,
               'network'        => $network,
               'networkSelector' => $selectHtml
           ));
      }

      public function checkAction()
      {
           throw new \RuntimeException('You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.');
      }

      public function logoutAction()
      {
           $bundle2 = new \ispg\Bundle\ChatBundle\Controller\DefaultController();
           $bundle2->setContainer($this->container);
           $returned_data = $bundle2->san();
       }
 }

logoutActionセッションの後、インデックスページにリダイレクトする方法をインデックスページにリダイレクトしたいと思います

誰でもこれを解決できますか?

4

2 に答える 2

3

あなたはあなたの内部でリダイレクトを呼び出す必要がありますlogoutAction()...

return $this->redirect($this->generateUrl('name_of_route'));
于 2012-09-25T07:42:15.947 に答える
3

Jaitsuは正しいです、それはあなたのコントローラーがContainerAwareを拡張するだけですが、基本的なコントローラーアクションのショートカットを提供するControllerクラスではありません...

return new Symfony\Component\HttpFoundation\RedirectResponse($this->generateUrl('name_of_route'));
于 2012-09-25T09:27:29.683 に答える