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
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Creare una custom property in GitHub
Usare le collection expression per inizializzare una lista di oggetti in C#
Sostituire la GitHub Action di login su private registry
Paginare i risultati con QuickGrid in Blazor
Generare token per autenicarsi sulle API di GitHub
Eseguire una query su SQL Azure tramite un workflow di GitHub
Utilizzare il trigger SQL con le Azure Function
Definire stili a livello di libreria in Angular
Eseguire query verso tipi non mappati in Entity Framework Core
Utilizzare Copilot con Azure Cosmos DB
Miglioramenti agli screen reader e al contrasto in Angular