Ребята, как я могу проверить в других модулях, если пользователь вошел в систему или нет? Могу ли я сделать это с помощью сессий или Zend \ Auth есть лучший способ сделать это?
Я создал модуль аутентификации, используя компонент Zend \ Authentication, и все работает нормально.
Я хочу разделить мои модули, как это:
Нет, как с моим существующим модулем аутентификации я могу проверить в модулях Admin, Order и Custommer, залогинился ли пользователь? Нужно ли для этого создать конкретный сервис?
У меня нет особого опыта с ZF, я нахожусь в фазе обучения.
Любой пример и совет?
Проверьте мой ответ здесь https://stackoverflow.com/a/32392608/949273
$events->attach(MvcEvent::EVENT_ROUTE, __CLASS__ . '::checkPermission', -100);
В основном в каждом запросе я выполняю
public static function checkPermission(MvcEvent $e)
{
$auth = $e->getApplication()->getServiceManager()->get('Zend\Authentication\AuthenticationService');
if(!$auth->hasIdentity()){
$url = $e->getRouter()->assemble([], ['name' => 'login']);
$response = $e->getResponse();
$response->getHeaders()->addHeaderLine('Location', $url);
$response->setStatusCode(302);
$response->sendHeaders();
return $response;
}
}
Zend Framework 2
В других ваших контроллерах
public function yourAction() {
$this->_authenticate();
$this->view['identity'] = (array)$this->identity;
// your code here
}
// authentication function
public function _authenticate() {
if(!$this->getServiceLocator()->get('AuthService')->hasIdentity()) {
return $this->redirect()->toRoute('auth');
} else {
$this->identity = $this->getServiceLocator()->get('AuthService')->getIdentity();
}
}
public function getAuthService() {
if (! $this->authservice) {
$this->authservice = $this->getServiceLocator()->get('AuthService');
}
return $this->authservice;
}