ZF2 проверить, если пользователь вошел в другие модули

Ребята, как я могу проверить в других модулях, если пользователь вошел в систему или нет? Могу ли я сделать это с помощью сессий или Zend \ Auth есть лучший способ сделать это?

Я создал модуль аутентификации, используя компонент Zend \ Authentication, и все работает нормально.

Я хочу разделить мои модули, как это:

  • Auth Module
  • Модуль Custrommer
  • Модуль заказа
  • Модуль администратора

Нет, как с моим существующим модулем аутентификации я могу проверить в модулях Admin, Order и Custommer, залогинился ли пользователь? Нужно ли для этого создать конкретный сервис?

У меня нет особого опыта с ZF, я нахожусь в фазе обучения.

Любой пример и совет?

0

Решение

Проверьте мой ответ здесь 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;
}
}
0

Другие решения

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;
}
0

По вопросам рекламы [email protected]