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

Jaitsu 是对的,只是您的 Controller 扩展了 ContainerAware 而不是为基本控制器操作提供快捷方式的 Controller 类......

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

您需要在您的logoutAction()...

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