Foros del Web » Programando para Internet » PHP » Zend »

Zend_Controller_Request_Abstract ayuda

Estas en el tema de Zend_Controller_Request_Abstract ayuda en el foro de Zend en Foros del Web. Hola estoy intentando hacer un Acl y un Auth , pero cuando hago la comprobacion e intento redireccionar dice : Parece que no encuentra la ...
  #1 (permalink)  
Antiguo 16/05/2010, 11:02
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 15 años, 4 meses
Puntos: 0
Zend_Controller_Request_Abstract ayuda

Hola estoy intentando hacer un Acl y un Auth , pero cuando hago la comprobacion e intento redireccionar dice :

Parece que no encuentra la pagina.
La página no está redirigiendo adecuadamente

He buscado y probado y parece que el erro me lo da aqui en:

$request->setControllerName('authentication')
->setActionName('login');

Si comento y hago un echo , el echo se muestra pero no redirecciona.

Mi plugin es el siguiente.
Código PHP:
class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract{

    private 
$_acl null;
    private 
$_auth null;

    public function  
__construct(Zend_Acl $aclZend_Auth $auth) {

        
$this->_acl  $acl;
        
$this->_auth $auth;
    }

    public function 
preDispatch(Zend_Controller_Request_Abstract $request){

        
$resource $request->getControllerName();
        
$action $request->getActionName();

        
$identity $this->_auth->getStorage()->read();
        
$role $identity->role;

        if(!
$this->_acl->isAllowed($role,$resource,$action)){
            
$request->setControllerName('authentication')
                     ->
setActionName('login');

             echo 
"a";
        }
    }


Mi Acl es :

Código PHP:
class Model_LibraryAcl extends Zend_Acl{

    public function  
__construct() {

        
$this->add(new Zend_Acl_Resource('index'));

        
$this->add(new Zend_Acl_Resource('book'));
        
$this->add(new Zend_Acl_Resource('edit'),'book');
        
$this->add(new Zend_Acl_Resource('add'),'book');

        
$this->add(new Zend_Acl_Resource('books'));
        
$this->add(new Zend_Acl_Resource('list'),'books');


        
$this->addRole(new Zend_Acl_Role('users'));
        
$this->addRole(new Zend_Acl_Role('admin','users'));

        
        
$this->allow('users','index');
        
$this->allow('users','books','list');
        
$this->allow('admin','book','edit');
        
$this->allow('admin','book','add');

    }

Y el Bootstrap es:
Código PHP:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function 
_initAutoload(){

      
$modelLoader = new Zend_Application_Module_Autoloader(array('namespace'=>'',
                                                                     
'basePath'=> APPLICATION_PATH));


      
$acl = new Model_LibraryAcl;
      
$auth Zend_Auth::getInstance();

      
$fc Zend_Controller_Front::getInstance();
      
$fc->registerPlugin(new Plugin_AccessCheck($acl,$auth));

      return 
$modelLoader;
    }


Donde puede estar el error. Muchas gracias
  #2 (permalink)  
Antiguo 17/05/2010, 08:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend_Controller_Request_Abstract ayuda

Recuerda que por defecto el ACL de Zend opera bajo un denyAll, por lo que tienes que especificamente agregarle el grant a todos al controlador Authentication, resource login, si no la pagina se queda redirigiendose de forma infinita.

Saludos.
  #3 (permalink)  
Antiguo 18/05/2010, 11:08
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Zend_Controller_Request_Abstract ayuda

Muchas gracias ,pero perdona que soy nuevo en zend framework , podrias especificar un poco mas como se haria eso...con codigo si es posible

gracias
  #4 (permalink)  
Antiguo 18/05/2010, 13:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend_Controller_Request_Abstract ayuda

Simplemente agrega un resource para tu auth, y login y dales grant usando $acl->allow(), si ya programaste lo de arriba, agregarle eso es trivial.

Saludos.
  #5 (permalink)  
Antiguo 18/05/2010, 14:30
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Zend_Controller_Request_Abstract ayuda

Perdona mi ignorancia pero he hecho estas modificaciones y no se si son las correctas, ademas no funciona
Controllers;
-AuthenticationController.

$this->add(new Zend_Acl_Resource('authentication'));
$this->allow('users','authentication','login');
$this->allow('users','authentication','logout');
$this->allow('users','authentication','getAuth');

Muchas gracias

Última edición por niewpendejo; 18/05/2010 a las 15:06
  #6 (permalink)  
Antiguo 18/05/2010, 15:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend_Controller_Request_Abstract ayuda

Es mejor si usas $this->allow(null, 'authentication'); así le das el grant a todos de entrar a ese resource.

Saludos.
  #7 (permalink)  
Antiguo 20/05/2010, 02:07
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Zend_Controller_Request_Abstract ayuda

Muchas gracias funciono perfectamente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:46.