В настоящее время я использую плагин Zend Controller для проверки подлинности. Следующее, вероятно, выглядит знакомым:
class SF_Plugin_Member_Auth extends Zend_Controller_Plugin_Abstract {
public function preDispatch(Zend_Controller_Request_Abstract $request) {
if (!SF_Auth::getInstance('Member')->hasIdentity()) {
if ($request->getControllerName() !== 'auth' && $request->getControllerName() !== 'error') {
$r = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
$r->gotoSimpleAndExit('login', 'auth', $request->getModuleName());
}
}
}
}
В чем я не уверен, так это в наилучшем способе обработки запроса AJAX, который не прошел проверку подлинности. Допустим, кто-то пытается войти в систему, используя форму, отправленную через AJAX. Как Javascript должен знать, что ему действительно нужно перенаправить пользователя на страницу входа?
Моя первая мысль - проверить, является ли запрос запросом AJAX, а затем отобразить объект JSON с подробными сведениями о том, куда перенаправить пользователя. Затем JavaScript может найти определенное свойство в возвращенном объекте JSON и использовать его в качестве URL-адреса для «location.href» пользователя.
С указанным выше связаны две проблемы:
- Я не уверен, как остановить отправку запроса - все, что я хочу сделать, это вывести простую строку JSON, если это запрос AJAX.
- Это не похоже на Zend-подобный способ делать вещи.
Есть ли кто-нибудь, кто натолкнулся и решил этот самый сценарий?
Большое спасибо,
Джеймс.