ASP.NET MVC possiede un filtro, stiamo parlando di RequireHttps, che ci permette di indicare quali controller o action richiedano una connessione SSL. L'effetto è che, in presenza di una connessione non protetta, la richiesta viene automaticamente ridirezionata sul protocollo HTTPS.
Tipicamente, però, ci sono intere aree di un sito che vanno protette tramite SSL: pensiamo, per esempio, all'intera gestione del carrello, dei pagamenti, o dell'account utente.
Con una semplice modifica, possiamo creare un filtro ereditato da RequireHttps, che però applichi la logica a una specifica area:
public class HttpsAreaFilter : RequireHttpsAttribute { public string AreaName { get; set; } public HttpsAreaFilter(string areaName) { this.AreaName = areaName; } protected override void HandleNonHttpsRequest( AuthorizationContext filterContext) { var requestArea = filterContext.RouteData .DataTokens["area"] as string ?? string.Empty; if (string.Equals(requestArea, this.AreaName, StringComparison.InvariantCultureIgnoreCase)) base.HandleNonHttpsRequest(filterContext); } }
Il metodo di cui abbimo effettuato l'override, ossia HandleNonHttpsRequest, viene chiamato dalla classe base tutte le volte che viene rilevata una connessione non protetta. A questo punto non dobbiamo far altro che verificare se la richiesta appartenga all'area indicata; in caso affermativo invochiamo la versione base del metodo, che effettuerà il redirect della richiesta su protocollo HTTPS.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migrare una service connection a workload identity federation in Azure DevOps
Effettuare il refresh dei dati di una QuickGrid di Blazor
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Creazione di componenti personalizzati in React.js con Tailwind CSS
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Change tracking e composition in Entity Framework
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Cancellare una run di un workflow di GitHub
Recuperare l'ultima versione di una release di GitHub
Il nuovo controllo Range di Blazor 9