Tengo una situación en la que necesito ejecutar algún código si el usuario intenta acceder a una URL protegida y es no autenticado/autorizado.¿Es posible ver si una URL/ruta está protegida detrás del firewall de forma programática?
De forma predeterminada, Symfony maneja usuarios no autenticados al redireccionar o reenviar al usuario a un formulario de inicio de sesión. Me gustaría evitar que esto suceda si el método de solicitud es POST, y en su lugar echo un objeto JSON.
La mejor manera que puedo pensar para manejar esto es para crear un escucha personalizado que escucha el caso kernel.request
y comprueba dos cosas:
- comprueba si el método de la petición es POST
- comprueba si el el usuario es autenticado totalmente
Si se trata de una petición POST, y el usuario no está autenticado por completo, me gustaría repetir un objeto JSON.
Pero mi oyente (esperadamente) está disparando para todas las solicitudes. Me gustaría limitarlo a comprobar solo si la solicitud es para una URL protegida por el firewall. ¿Es posible verificar esto programáticamente?
que también tienen una persistente sospecha de que hay una manera más sencilla de hacer esto, pero no puede entenderlo, así que si alguien tiene algún consejo, me encantaría escucharlos :)
Editar
@Problematic: el motivo para verificar únicamente las solicitudes cortadas es porque tengo algunas solicitudes que no tienen cortafuegos, y si mi código se activa, recibiré el objeto JSON antes mencionado en lugar de la respuesta real de la solicitud.
En este momento, si no estoy conectado y realizo una solicitud POST al api/get/something
(que está detrás del firewall), Symfony devuelve el código HTML que describe la página de inicio de sesión. En cambio, quiero simplemente hacer un eco de algo como {error: 'User is not authorized'}
. Pero solo quiero que esto suceda para las solicitudes POST.
¿Cuál es el motivo de solo verificar las solicitudes de firewall? – Problematic
@Problematic, vea mi edición –