代码之家  ›  专栏  ›  技术社区  ›  yevg

Symfony PHP-从服务中重定向

  •  -1
  • yevg  · 技术社区  · 6 年前

    我在一个 BaseController

    namespace App\Controller;
    
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    
    use App\Services\Authorize;
    
    class BaseController extends Controller {
    
        private $auth;
    
        public function __construct(Authorize $auth){
    
            $this->auth = $auth;
        }
    
        public function initBaseController() {
    
            $this->auth->do_authorize();
        }      
    }
    

    以及 Authorize 服务如下所示:

    namespace App\Services;
    
    use Symfony\Component\HttpFoundation\RedirectResponse;
    use App\Services\Session;
    
    class Authorize {
    
        private $session;
    
        public function __construct(Session $session){
    
            $this->session  = $session;
        }
    
        public function do_authorize(){
    
            if($this->session->validate('fake_token'){
    
                return $this->redirectToRoute('login-portal'); // ** ERROR **
            }
    
        }
    
    }
    

    因此,我们的想法是使用 如果会话不存在或使用无效,则重定向到登录页

    但是重定向行抛出了一个错误,尽管这是 symfony docs 关于这个话题。

    我相信这是因为我试图从服务中重定向,而不是从控制器中重定向。

    如何从服务中重定向?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Felippe Duarte    6 年前

    不要。回来 true false 从控制器重定向

    public function initBaseController()
    {
        $auth = $this->auth->do_authorize();
        if($auth) {
            return $this->redirectToRoute('login-portal');
        }
    }
    
    
    public function do_authorize()
    {
        return $this->session->validate('fake_token');
    }