Мне интересно, как выполнить управление доступом во всем модуле. Позвольте мне объяснить: если у меня есть модуль (/ authentication /), который разработан только для создания сеанса. И еще один модуль (/ Main /), который содержит основное приложение.Проверка идентификации пользователя перед любым запросом
Что я хочу сделать, это проверить любой запрос на основном модуле, если пользователь правильно создал сеанс.
Во время моих исследований в Интернете я увидел способ сделать это. Я не уверен, поэтому скажите мне, хорошо ли мое решение: я реализую событие в моей начальной загрузке (на module.php), которое проверяет правильность создания сеанса. Если это не так, я перенаправляюсь к аутентификации модуля.
public function onBootstrap($e){
$eventManager = $e->getApplication()->getEventManager();
$auth = new AuthenticationService();
if (!$auth->hasIdentity()) {
$response = $e->getResponse();
$response->getHeaders()->addHeaderLine('Location', 'authentification');
$response->setStatusCode(302);
}
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
}
Что вы думаете об этом решении?
К сожалению, это решение не очень хорошо. Я не знаю почему, но кажется, что этот код выполняется даже в аутентификации модуля. Итак, при первом вызове, когда вы пытаетесь войти в URL:/main, вы будете перенаправлены на модуль/аутентификацию, и снова код будет повторно выполнен, и модуль перенаправит вас на/аутентификацию и снова и снова и снова ...
Так что я считаю, что решение состоит в том, чтобы проверить, отличается ли запрашиваемый URL-адрес от этой аутентификации.
Как это сделать?
Надеюсь, мой вопрос ясен и легко понятен.
Спасибо = D
Вы можете хотите проверить существующие модули и как они это делают;) ** ZfcUser ** и ** ** BjyAuthorize будут вашими наивысшими приоритетами в настоящее время. Кроме того, здесь есть несколько тем вокруг этой темы, ищите немного, и вы их найдете. – Sam