Il motore di ASP.NET, di default, è in grado di intercettare le richieste solo per le estensioni che gestisce direttamente.
Se si ha bisogno di proteggere con la FormsAuthentication file ZIP o PDF, ad esempio, il meccanismo non entra in azione.
Per ovviare a questo problema è però sufficiente mappare, da IIS, l'estensione desiderata sul motore di ASP.NET (per farlo è sufficiente replicare la configurazione per l'estensione .aspx).
Una volta fatta la modifica, è sufficiente modificare il web.config in modo che vengano definite le policy di accesso alle risorse.
Se i file sono tutti in una directory, il compito è molto più semplice.
Qualora invece si tratti di file sparsi per il disco del server, che hanno in comune l'estensione, il tag location non può esserci utile ed è quindi indispensabile optare per qualcosa di diverso.
In questo caso, la soluzione migliore consiste nell'implmentare un semplice HttpHandler che verifichi, per tutti i file, se la richiesta è autenticata o meno:
using System;
using System.Web;
namespace ASPItalia.com.Handlers
{
// handler per un'intera estensione
public class ProtectedContentHandler : IHttpHandler
{
// processa la richiesta corrente
public void ProcessRequest(HttpContext ctx)
{
HttpResponse Response = ctx.Response;
HttpRequest Request = ctx.Request;
// se non è autenticato, rimando alla pagina di login
if (!Request.IsAuthenticated)
{
Response.StatusCode = 401;
Response.End();
}
// il contenuto arriva al browser
Response.Clear();
Response.ContentType = "application/x-zip-compressed";
Response.WriteFile(Request.Path);
}
public bool IsReusable
{
get
{
return true;
}
}
}
}
Nel web.config, andrà poi aggiunto, sotto configuration\system.web, la stessa voce per ogni estensione da gestire:
<httpHandlers>
<add verb="*" path="*.zip" type="ASPItalia.com.Handlers.ProtectedContentHandler,handlers" />
<add verb="*" path="*.pdf" type="ASPItalia.com.Handlers.ProtectedContentHandler,handlers" />
</httpHandlers>
Per approfondimenti sugli HttpHandler si veda:
http://www.aspitalia.com/liste/usag/script_ricerca_HttpHandlers.aspx
Sulla FormsAuthentication:
http://www.aspitalia.com/servizi/focus/mostra.aspx?ID=640
- The Developer Highway Code
- #928 - Proteggere il ViewState di ASP.NET criptandolo
- Modificare i CSS Friendly Control Adapters
- #933 - Una GridView con supporto per più righe selezionabili
- #948 - Recuperare l'ID del controllo che ha scatenato l'AsyncPostBack con ASP.NET AJAX
- #950 - Il supporto al pulsante back del browser con ASP.NET AJAX 3.5 SP 1
- Piccoli grandi VWD Express 2008 crescono
- #957 - Le novità della WebForm in ASP.NET 3.5 SP1
- #945 - Verificare l'accesso ai file mediante l'UrlAuthorizationModule di ASP.NET
- #946 - Attributi per il supprto a design time di custom control con ASP.NET
- Trovare il Page not Found...
- #963 - Intercettare gli eventi LoadComplete e PreRenderComplete da uno user control
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!