Я работаю над кодом, который кто-то написал на основе Fat-Free Framework. В основном это CRM.
Я видел, что он использует диспетчерскую функцию, подобную той, что я здесь:
В чем разница между URL-маршрутизатором и диспетчером?
Я не нашел достаточно документации по этому подходу.
Во всяком случае, он также поставил аутентификацию в диспетчере так:
function dispatch()
{
if(UserManager::isLogin())
{
$controller = $router->getController();
$actionName = $router->getAction();
$controller[$actionName]();
}
else
{
routeTo('/login');
}
}
Мой вопрос: считаете ли вы правильным поставить одну диспетчерскую проверку подлинности внутри диспетчера для всех контроллеров, или вы будете выполнять проверку входа в систему на каждом контроллере, или вы сделаете что-то еще? Я привожу примеры из хорошо известных фреймворков или CMS.
Спасибо
Первый F3 не разрешает диспетчеризацию по умолчанию, поэтому подход заключается в использовании функции beforeroute ().
В вашем базовом контроллере (или классе, перенаправленном на) добавьте
public function beforeroute($f3){
if(!UserManager::isLogin())
{
$f3->reroute('/login');
}
}
Затем каждый раз, когда вы вызываете класс (который расширяет ваш базовый класс с помощью вышеуказанной функции), он сначала проверяет логин. Надеюсь это поможет.
Других решений пока нет …