[ZF2.2] authentification HTTP
Bonjour les amis,
Je débute en Zend (mais pas en PHP) j'ai réussi a moitié à mettre une authentification dans un controller d'un module, le problème, c'est que quand je cliques sur 'annuler' on accède quand même à la page 'protégée'
Voici mon source :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| <?php
namespace Nimda\Controller;
use Zend\Authentication\Adapter\Http;
use Zend\Authentication\Adapter\Http\FileResolver;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
/**
* Description of NimdaController
* Controlleur du module Nimda
*
* @author pj
*/
class NimdaController extends AbstractActionController {
public function indexAction() {
$this->login();
}
public function testAction() {
}
private function login() {
$config=array(
'accept_schemes'=>'basic digest',
'realm'=>'AdministrHMDtion',
'digest_domains'=>'/admin',
'nonce_timeout'=>3600
);
$adapter=new Http($config);
//
$basicResolver=new FileResolver();
$basicResolver->setFile(__DIR__.'/password');
$digestResolver=new FileResolver();
$digestResolver->setFile(__DIR__.'/password');
$adapter->setBasicResolver($basicResolver);
$adapter->setDigestResolver($digestResolver);
$request=$this->getRequest();
$response=$this->getResponse();
/*
assert($request instanceof Zend\Http\Request);
assert($response instanceof Zend\Http\Response);
*/
$adapter->setRequest($request);
$adapter->setResponse($response);
$result=$adapter->authenticate();
if(!$result->isValid()) {
$response->setContent('<h1>Bad Motherfucker !</h1>');
}
}
}
?> |
Comment faire pour que mon fichier index.phtml soit inaccessible depuis mon Controller ?
j'ai aussi une autre question : la j'ai fait une fonction login() que j'appelle dans indexAction(), j'avais prévu d'appeler cette fonction dans toutes mes fonctions 'Action' mais je trouve ça un peu lourd, n'y a t-il pas un autre moyen (pour protéger tous le module).
Merci beaucoup pour vos réponses.