Ho una situazione in cui è necessario eseguire codice se l'utente tenta di accedere a un URL protetto ed è non autenticato/autorizzato.È possibile vedere se un URL/percorso è protetto dietro il firewall programmaticamente?
Per impostazione predefinita, Symfony gestisce gli utenti non autenticati reindirizzando o inoltrando l'utente a un modulo di accesso. Mi piacerebbe evitare che ciò accada se il metodo di richiesta è POST, ed echeggiare invece un oggetto JSON.
Il modo migliore che posso pensare di gestire questa situazione è di creare un listener personalizzato che ascolta l'evento kernel.request
e controlla due cose:
- controlla se il metodo di richiesta è POST
- controlla se il utente è completamente autenticati
Se è una richiesta POST, e l'utente non è pienamente autenticato, avrei eco un oggetto JSON.
Ma il mio ascoltatore è (prevedibilmente) attivo per tutte le richieste - Vorrei limitarlo per controllare solo se la richiesta è per un URL protetto dal firewall. È possibile controllare questo programma?
Ho anche un fastidioso sospetto c'è un modo più semplice per andare su questo, ma non si può capire, quindi se qualcuno ha qualche consiglio, mi piacerebbe sentire loro :)
Modifica
@Problematic - Il motivo per cui si controllano solo le richieste firewall è perché ho alcune richieste che non sono firewall, e se il mio codice viene attivato, riceverò l'oggetto JSON sopramenzionato invece della risposta reale della richiesta.
In questo momento se non si effettua l'accesso e si effettua una richiesta POST a api/get/something
(che si trova dietro il firewall), Symfony restituisce l'HTML che descrive la pagina di accesso. Invece, voglio solo echo qualcosa come {error: 'User is not authorized'}
. Ma voglio solo che questo accada per le richieste POST.
Qual è il motivo per il solo controllo delle richieste firewall? – Problematic
@Problematic, vedere la mia modifica –