2012-08-11 20 views
5

Ho un sito Web con alcune aree che richiedono un accesso tramite autenticazione basata su moduli, utilizzando il mio provider che si collega al database.Miscelazione autenticazione di base e autenticazione moduli in ASP.NET MVC3

Il sito Web è in anteprima, quindi voglio proteggere l'intero sito tramite l'autenticazione di base per impedire l'accesso non autorizzato prima che vada in diretta.

Il problema si verifica quando l'autenticazione di base e delle forme si trova nelle pagine pubbliche che vanno invece al login dei moduli.

Come è possibile mantenere l'autenticazione basata su moduli per l'accesso del membro e l'accesso al portale, ma proteggere l'intero sito dall'accesso pubblico prima di passare al live utilizzando l'autenticazione di base?

risposta

0

Penso che dovresti essere in grado di soddisfare il tuo caso d'uso nel modo seguente.

All'interno del sito .Net Le regole di autorizzazione creano una regola Nega per utenti anonimi.

Al sito Autenticazione abilitare l'autenticazione di base e Form. Disabilita tutti gli altri tipi di autenticazione. Ciò dovrebbe richiedere a tutti gli utenti di essere autenticati con l'autenticazione di base per utilizzare il sito di base e quindi richiedere l'accesso ai moduli alle parti del sito che richiedono l'autenticazione personalizzata.

+0

Grazie Alex. Ho provato ma quello ha lo stesso problema. Il problema è che tutte le pagine ASP.NET (controller) richiedono l'accesso, anche quelle che hanno l'attributo [AllowAnonymous] aggiunto, descritto qui: http://blogs.msdn.com/b/rickandy/archive/2012/03/23/ assicurare-your-asp-net-MVC-4-app-e-il-nuovo-AllowAnonymous-attribute.aspx. – DaveO

+0

Ho usato MVC3 e ho funzionato "On My Machine", che so non aiuta. Con la configurazione di cui sopra ho un filtro LogonAuthorize: AuthorizeAttribute personalizzato che esclude alcuni controller dal richiedere il filtraggio. if (! (filterContext.Controller è AccountController)) { base.OnAutorizzazione (filterContext); }. Non sono sicuro di come questo interagirebbe con l'attributo AllowAnonymous (che userò quando mi trasferirò su MVC4). – AlexC

+0

Ho provato ad aggiungere un assegno per il controller come hai mostrato nel codice sopra, ma ho ancora lo stesso problema :(Penso di aver bisogno di qualche modulo http o qualcosa in quanto IIS si lamenta con "Non puoi usare sia un metodo di autenticazione basato su challenge che un metodo di autenticazione basato sul reindirizzamento allo stesso tempo ".Questa è una situazione temporanea quindi non voglio scavare nella complessità dell'elaborazione di autenticazione mista o scrivere moduli http se posso aiutarlo! È strano per me che IIS /Asp.Net non può gestire un blocco globale (autenticazione di base) e l'accesso basato su moduli quando il mio login di moduli è basato su un db. – DaveO

Problemi correlati