Lab 9
Transkrypt
Lab 9
Technologie programowania systemow internetowych Laboratorium 9 Laboratorium 9 – Blog: kontrola dostępu Kontrola dostępu za pomocą Zend_Acl Konfiguracja Zend_Acl 1. Stwórz nowy plik AclPlugin.php w katalogu /application/plugins/. Umieść w nim klasę Blog_Plugin_AclPlugin: <?php class Blog_Plugin_AclPlugin extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { // Przygotuj ACL $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role('guest')); $acl->addRole(new Zend_Acl_Role('user'), 'guest'); $acl->addRole(new Zend_Acl_Role('admin'), 'user'); $acl->addResource(new Zend_Acl_Resource('index')); $acl->addResource(new Zend_Acl_Resource('error')); $acl->addResource(new Zend_Acl_Resource('uzytkownicy')); $acl->allow('guest', 'index', 'index'); $acl->allow('guest', 'index', 'pokaz'); $acl->allow('guest', 'uzytkownicy', 'login'); $acl->allow('user', $acl->allow('user', $acl->allow('user', $acl->allow('user', 'index', 'dodaj'); 'index', 'edytuj'); 'index', 'usun'); 'uzytkownicy', 'logout'); $acl->allow('admin', null); // Przeprowadź autoryzację $auth = Zend_Auth::getInstance(); if($auth->hasIdentity()) { $role = $auth->getIdentity()->grupa; } else { $role = 'guest'; } $resource = $this->getRequest()->getControllerName(); $privilege = $this->getRequest()->getActionName(); if(!$acl->isAllowed($role, $resource, $privilege)) { if($role=='guest') { $request->setControllerName('uzytkownicy'); $request->setActionName('login'); } else { $request->setControllerName('error'); Strona 1 z 2 Technologie programowania systemow internetowych Laboratorium 9 $request->setActionName('noauth'); } } } } 2. Zarejestruj plugin – dodaj do pliku konfiguracyjnego application.ini linijkę: resources.frontController.plugins.acl = "Blog_Plugin_AclPlugin" 3. Jeśli rozbudowałeś bloga o dodatkowe akcje lub kontrolery, uzupełnij odpowiednio kod autoryzacji. Akcja obsługująca błąd autoryzacji 1. Dodaj akcję noauth w kontrolerze Error: zf create action noauth Error 2. W widoku akcji noauth wyświetl komunikat /views/scripts/terror/noauth.phtml): o braku uprawnień (plik <h2>Brak uprawnień</h2> Strona 2 z 2