Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Restringir acceso a un action

Estas en el tema de Restringir acceso a un action en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Si a un action le metemos: $this->_helper->viewRenderer->setNoRender(); la vista no se mostrará en $this->layout()->content; y la anterior vista que hubiese en "content" al ejecutarse la ...
  #1 (permalink)  
Antiguo 01/03/2009, 11:32
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 3 meses
Puntos: 2
Restringir acceso a un action

Si a un action le metemos: $this->_helper->viewRenderer->setNoRender(); la vista no se mostrará en $this->layout()->content; y la anterior vista que hubiese en "content" al ejecutarse la acción se vacía por el setNoRender.

Además, si cualquier usuario va a ese action por la url... pasará lo mismo.

¿ Es normal que la vista anterior en "content" se vacíe ?

Como puedo hacer que el action solo haga x procesos, sin vistas, pero que no borre la vista anterior que hubiese en $this->layout()->content ???

Otra cuestión independiente es, ¿ Puede hacerse que un action no pueda ser llamado desde la url ?

Gracias !!!
  #2 (permalink)  
Antiguo 01/03/2009, 12:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda !! Restringir acceso a un action

Mmmm creo deberías darte una vuelta y ver Zend_Acl sirve para permitir los accesos.

Saludos
  #3 (permalink)  
Antiguo 01/03/2009, 17:01
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Ayuda !! Restringir acceso a un action

He estado leyendo Zend_Acl, pero no acabo de entender que lógica habría que seguir si quiero impedir el acceso de un usuario al action.

El action podría ser el resource y role podrían haber dos "application" y "guest".

Aún así, no sé como podría ayudarme esto para crear un actión que al ser al ser llamado, sin vista y que solo procese operaciones pero ke no vacie el named segment "content", sino que mantuviese la vista anterior.

Y si no sé como aplicaría Acl a un action de un controller obviamente tampoco sé como haría para impedir que un usuario pueda llamar a la acción por la url. Tengo la conjetura de que quizá podría hacer esto último con los assertions.

Aún así miraré tutoriales mañana, tutoriales que puedan representar un práctica real, no como pienso que hace la guia de referencia (por algo se llama así), a ver si me resuelve algo ;). Hoy tengo ke irme ya a la cama.

Un saludo.

Última edición por yoguuu; 01/03/2009 a las 17:10
  #4 (permalink)  
Antiguo 01/03/2009, 17:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda !! Restringir acceso a un action

En efecto tienes que usar Zend_Acl para eso para checar, y aunque manden llamar a la action por el URL el Zend_Acl va a verificar si puedes o no entrar a esa action.

Para no borrar el contenido eso lo tienes que programar tu, lo mejor es que hagas un forward en tu action para que se pase a otro action y ahi se renderee el codigo.

Saludos
  #5 (permalink)  
Antiguo 03/03/2009, 05:07
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Ayuda !! Restringir acceso a un action

Hola,

Creo que con estos 5 casos de uso podré probar Acl con garantías:
http://framework.zend.com/wiki/pages...?pageId=39025#

Además me acabo de dar cuenta que akí están los códigos de los 5 casos de uso (5 aplicaciones) y una aplicación más:
http://framework.zend.com/wiki/pages...n?pageId=39025

Ah por cierto me fue perfecto lo del forward ; D

Gracias por tus sabios consejos GatorV
Ahora me doy cuenta que es exactamente lo ke venia necesitando

Última edición por yoguuu; 03/03/2009 a las 10:11
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 07:21.