Ho un'applicazione che utilizza l'autenticazione basata su form ASP.NET. Per la maggior parte, funziona alla grande, ma sto cercando di aggiungere il supporto per una semplice API tramite un file .ashx. Voglio che il file ashx abbia un'autenticazione opzionale (ad esempio se non si fornisce un'intestazione di autenticazione, funziona semplicemente in modo anonimo). Ma, a seconda di quello che fai, voglio richiedere l'autenticazione in determinate condizioni.Autenticazione moduli: disabilitare il reindirizzamento alla pagina di login
Ho pensato che sarebbe stato semplice rispondere con il codice di stato 401 se non è stata fornita l'autenticazione richiesta, ma sembra che il modulo Forms Authentcation lo stia intercettando e rispondendo con un reindirizzamento alla pagina di accesso. Quello che voglio dire è che, se il mio metodo ProcessRequest
assomiglia a questo:
public void ProcessRequest(HttpContext context)
{
Response.StatusCode = 401;
Response.StatusDescription = "Authentication required";
}
Poi invece di ottenere un codice di errore 401 sul client, come mi aspetto, io sono in realtà ottenere un 302 reindirizzamento alla pagina di login .
Per il traffico HTTP nono, posso vedere come sarebbe utile, ma per la mia pagina API, voglio che il 401 passi senza modifiche in modo che il chiamante sul lato client possa rispondere ad esso al posto di programmazione.
C'è un modo per farlo?
Questa è la risposta per chiunque usi .NET 4.5. Peccato che non l'abbia letto fin qui nella lista e ho dovuto trovarlo da solo nelle fonti decompilate! –
È possibile inserire questo evento Global.asax 'Application_EndRequest' per applicarlo sull'intera applicazione. [Per esempio.] (Http://stackoverflow.com/a/18519725/188246) –
Ho usato uno snippet simile nel metodo Application_BeginRequest con grande successo. La richiesta è AJAX? Imposta la bandiera immediatamente. –