2012-03-27 19 views
5

Estoy tratando de descubrir cómo redirigir a una página determinada (que en mi caso es la página de pago) un usuario que no tiene acceso no se está ejecutando una suscripción válida.Symfony2: Cómo redirigir en una página específica cuando el usuario no tiene permiso para acceder a un patrón de url

Sé que podría hacer eso al poner un cheque garantizado en todas mis acciones, pero no me gusta esta solución ya que parece ser una gran pérdida de tiempo dada la cantidad de acciones que tengo.

He consultado los parámetros firewall.access_denied_url, pero no quiero vincular AccessDenied a la página de pago porque, por ejemplo, el acceso a la página de administración está denegado a cualquier usuario que no tenga ROLE_ADMIN, y redirigir a la página de pago no tiene ningún sentido.

Ya tengo un votante que comprueba si un usuario es válido o no y otorga acceso en ese caso, pero ¿cómo puedo usar este votante cuando un usuario intenta alcanzar un cierto patrón y redirigirlo cuando el acceso es denegado?

¡Gracias de antemano!

Respuesta

1

Puede usar JMSAopBundle.

De la documentación:

Este paquete añade capacidades de AOP a Symfony2.

Si aún no ha oído hablar de AOP, básicamente le permite separar una preocupación transversal (por ejemplo, comprobaciones de seguridad) en una clase dedicada, y no tener que repetir ese código en todos los lugares donde está necesario.

En otras palabras, esto le permite ejecutar código personalizado antes, y después de la invocación de ciertos métodos en su capa de servicio, o sus controladores. También puede optar por omitir la invocación del método original o lanzar excepciones.

+1

¿Por qué no puedes usar un simple detector de controlador? – meze

+1

Supongo que este paquete hace su trabajo a través de oyentes. Por supuesto que puede lograrlo usted mismo a través de oyentes. –

6

en app/config/security.yml se incorporen dentro de la seguridad:

access_denied_url:/foo/error403

, Symfony redirigir todas las páginas de las cuales el usuario no puede acceder a/foo página/error403.

+1

corrección, reenviará (subrequest interna) –

Cuestiones relacionadas