Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Area riservata con Zend Framework

    Ciao a tutti, sto muovendo i primi passi con lo zend framework e seguendo alcuni tutorial sono riuscito a capire e creare un semplice gestionale di dati (visualizza, inserisci, elimina e modifica).

    A questo punto vorrei che tale applicativo sia protetto e quindi avrei bisogno di implementare una gestione degli utenti e proteggere tutto.

    Ho guardato qualche tutorial ma senza risultati e sinceramente non capisco cosa manca o dove sbaglio.

    Qualcuno conosce una guida semplice semplice per creare un sistema di autenticazione con zend framework?
    Oppure qualcuno che con tanta pazienza mi spiega come fare?

    Grazie in anticipo

  2. #2
    forse può esserti utile utilizzare l'ACL (Access Control List).

    Dopo l'autenticazione di un utente registri le sue informazioni, e nel bootstrap avvi il controllo sull'Access Control (in cui definisci i ruoli e le relative risorse che posso vedere)
    Ristoranti Roma
    http://www.ristorantiromaristo.it
    info@ristorantiromaristo.it

  3. #3
    Ciao, instanto grazie per la risposta e infatti mi son letto un pò di guide e tutorial vari sull'acl ed è proprio quello che vorrei implementare nella mia applicazione.

    Ora quello che non capisco proprio è una cosa: devo creare una classe... dove la creo e come la registro poi su tutta l'applicazione?

    Sono domande banali è vero, ma sinceramente non ho mai trovato come fare... me la dai una mano?

  4. #4
    implementare l'ACL, una volta fatto te lo trovi per tutta l'applicazione e non devi praticamente mai metterci le mani (solo per andarci a registrare un nuovo controller che crei e definire i ruoli).

    Se lavori su progetti ZF, questo esempio può esseri utile:
    (non ho mai provato ad utilizzare questa classe singolarmente in progetti php già esistenti, ma credo cmq sia uguale)

    AccessControl.php (lo metti nella library)
    Codice PHP:
    class AccessControl extends Zend_Acl{
        
        public function 
    __construct(){
            
          
    $index = new Zend_Acl_Resource('index');
            
    $this->add($index);
            
            
    $this->add(new Zend_Acl_Resource('error'));
            
    $this->add(new Zend_Acl_Resource('login'));
                    
    //Registro il controller Main
                    
    $this->add(new Zend_Acl_Resource('main'));

            
    $guest = new Zend_Acl_Role('guest');
            
    $this->addRole($guest);

            
    $this->addRole(NEW Zend_Acl_Role('member'),'guest'); 


            
    $this->allow('guest','error');    
            
    $this->allow('guest','index');//il guest puo vedere index        
            
    $this->allow('guest','login');//il guest puo vedere login
            
    $this->allow('member','main');//il member puo vedere MainController

        
    }        

    AuthPlugin.php (lo metti nella library)
    Codice PHP:
    class AuthPlugin extends Zend_Controller_Plugin_Abstract{
        
        public function 
    preDispatch(Zend_Controller_Request_Http $request){
            
            
    $controller $request->getControllerName(); 
            
    $action     $request->getActionName();
            
            
    $auth Zend_Auth::getInstance();
            
    $role 'guest';
                     
            if (
    $auth->hasIdentity()){ 
                
    $role 'member';
            }
            
            
    $acl Zend_Registry::get('acl');
            

            if(
    $acl->isAllowed($role,$controller,$action)){
                
    //echo "Autorizzato";            
            
    }
            else{
                
    //rimando l'utente al login
                            
    $request->setControllerName('login');
                
    $request->setActionName('index');        
            }    
        }
        

    Aggiungi queste funzione nel Bootstrap in modo da avviare la risorsa ad ogni richiesta:
    Codice PHP:
        function _initAccessControl(){         
             
    $acl = new AccessControl();
            
    Zend_Registry::set('acl'$acl);
        }
        
        function 
    _initSetController(){
            
    $this->bootstrap('FrontController'); 
            
    $front $this->getResource('FrontController');
             
    $front->registerPlugin(new AuthPlugin());    
         } 
    Ristoranti Roma
    http://www.ristorantiromaristo.it
    info@ristorantiromaristo.it

  5. #5
    Intanto grazie, ma continuo a non capire... come li trova gli utenti?
    Mi stai dicendo che Zend_Acl va usato dopo aver creato il sistema di autenticazione con Zend_Auth?
    Sinceramente pensavo che uno sostituisse l'altro.

    Quindi per capire... prima creo il sistema di autenticazione ( ho provato http://akrabat.com/zend-auth-tutorial/ e sono riuscito a proteggere ogni cosa )
    Poi aggiungo + o - quello che mi hai postato tu per differenziare quali moduli vedere per ogni tipo di utente che vado a creare?

    Scusami per le domande stupide ma essendo la prima volta che mi approccio a Zend ed in generale alla programmazione ad oggetti mi risulta complicato capire cosa/come/quando fare le cose.

  6. #6
    si esatto, quando fai il login, se l'utente è valido, devi autenticare l'utente con la zend_auth in modo che l'ACL vada a verificare se esiste l'utente!

    all'utente "loggato" gli associ un ruolo (member) e nel AccessControl imposti ad ogni ruolo le risorse (controller) che posso vedere
    Ristoranti Roma
    http://www.ristorantiromaristo.it
    info@ristorantiromaristo.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.