2009-07-21 10 views
8

Conosco il modo semplice per arrivare a una pagina SSL in ASP.NET MVC - tramite il [RequireSSL] attribute ma sono un po 'confuso al modo migliore di fare il contrario.Come faccio il OPPOSTO di [RequireHttps (Redirect = true)] in ASP.NET MVC

Ho molti collegamenti sul mio sito in una barra di intestazione e molti di questi collegamenti non richiedono SSL e non voglio ancora usare SSL.

Il progetto Futures semplifica il reindirizzamento automatico a una pagina SSL con [RequireSSL(Redirect=true)], ma non sembra facile uscire da questo contesto e reindirizzare automaticamente a http.

Cosa mi manca?

+1

note questo è stato rinominato RequireHttps in MVC 2 –

risposta

4

Non ti manca nulla; non ci sono funzionalità predefinite per questo. Puoi crearne facilmente prendendo the RequireSslAttribute source e modificandolo.

+0

ha senso farlo? Non posso vedere alcun problema con esso me stesso, ma poi mi lascia chiedermi perché non è una funzionalità standard. ho intenzione di ottenere quegli fastidiosi errori di "essere stati reindirizzati a una pagina non sicura"? –

+4

Non è una funzione standard perché non c'è abbastanza incentivo per includerla. Allo stesso modo, [RequireSsl] non è stato spostato da Futures e nel file binario principale perché, anche se è stato testato, non è ancora passato attraverso specifiche, recensioni e documentazione. Se sei preoccupato per gli avvisi, forse è meglio generare collegamenti HTTP invece dei collegamenti HTTPS in primo luogo. Esistono sovraccarichi di Html.ActionLink() che accettano un protocollo come parametro. – Levi

0

Questo vale la pena di lettura (epecially per realizzare le implicazioni di sicurezza del passaggio incautamente torna a http da https:

Partially SSL Secured Web Apps With ASP.NET - protezione specifico, ma rilevante non MVC è relativa

Partial SSL Website with ASP.NET MVC - MVC amichevole

È un problema abbastanza complesso in generale, ma non ho ancora trovato una vera soluzione a tutto ciò che voglio fare, ma ho pensato che questi articoli possano aiutare gli altri.

1

Risposta da una domanda vittima altrove:

How to step out from https to http mode in asp.net mvc.

ATTENZIONE: Se la scelta di utilizzare questo approccio il cookie di autenticazione verrà inviato su testo normale dopo il passaggio di nuovo a HTTP, e può potenzialmente essere rubati e utilizzati da qualcun altro See this. In altre parole, se si stesse utilizzando questo per un sito bancario, sarebbe necessario assicurarsi che il passaggio a http fosse primo disconnettere l'utente.

public class DoesNotRequireSSL: ActionFilterAttribute 
    { 
     public override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
       var request = filterContext.HttpContext.Request; 
       var response = filterContext.HttpContext.Response; 

       if (request.IsSecureConnection && !request.IsLocal) 
       { 
       string redirectUrl = request.Url.ToString().Replace("https:", "http:"); 
       response.Redirect(redirectUrl); 
       } 
       base.OnActionExecuting(filterContext); 
     } 
    } 
Problemi correlati