У меня есть приложение Symfony 4 со службой авторизации, которую я хотел бы обработать с помощью некоторой логики более высокого уровня для определения того, имеет ли данный пользователь доступ к данному маршруту или нет.
Я реализую это в 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 **
}
}
}
Так что идея заключается в реализации этого процессаглобально используя BaseController
и перенаправьте на страницу входа в систему, если сеанс не существует или недействителен с использованием службы Authorize
.
Но строка перенаправления выдает ошибку, несмотря на то, что это правильная реализация в symfony docs на эту тему.
Я полагаю, что это так, потому что я пытаюсь перенаправить из службы, а не контроллера.
Как можно перенаправить из службы?