2015-10-29 2 views
0

Comment puis-je vérifier dans d'autres modules si l'utilisateur est connecté ou non? Puis-je faire cela avec des sessions ou Zend \ Auth ont une meilleure façon de le faire?ZF2 vérifier si l'utilisateur s'est connecté d'autres modules

J'ai créé le module auth en utilisant le composant Zend \ Authentication et tout fonctionne correctement.

Je veux séparer mes modules comme ceci:

  • Auth Module
  • Custrommer Module
  • Module de commande
  • Module Admin

Pas comment avec mon module Auth existant je peux vérifier dans les modules Admin, Order et Custommer si l'utilisateur est connecté ou non? Ai-je besoin de créer un service spécifique pour cela? Je n'ai pas beaucoup d'expiriance avec ZF, je suis en phase d'apprentissage.

Un exemple et un conseil?

Répondre

0

Vérifiez ma réponse ici https://stackoverflow.com/a/32392608/949273

$events->attach(MvcEvent::EVENT_ROUTE, __CLASS__ . '::checkPermission', -100); 

En gros, dans chaque demande j'exécute

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

Dans vos autres contrôleurs

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