Abbiamo un'applicazione intranet ASP.NET MVC 4. Stiamo usando l'autenticazione di Windows e quell'aspetto funziona bene. Vengono utilizzate le credenziali dell'utente e possiamo accedere a tali credenziali dall'app Web.Ibrido di autenticazione di Windows e autenticazione dei moduli in ASP.NET MVC 4
Ciò che vogliamo veramente è una sorta di modalità ibrida, tuttavia. Vogliamo ottenere le credenziali dell'utente dal browser, ma vogliamo anche verificare che l'utente si trovi nel nostro database dell'applicazione. Se l'utente è nel database, possono semplicemente continuare. Se non lo sono, vogliamo reindirli a una pagina che richiede credenziali alternative. Quello che sto facendo ora è, in Global.asax.cs
, ho un metodo Application_AuthenticateRequest
e sto verificando se l'utente è autenticato. Se lo sono e le loro informazioni sui cookie non riflettono il fatto che sono collegati al sistema, quindi li accedo e configuro alcuni cookie con informazioni sull'utente. Se non sono autenticati, li reindirizzo a una pagina di accesso. Non possiamo utilizzare i ruoli di Active Directory per motivi legati ai criteri aziendali, quindi è necessario utilizzare il database per l'autenticazione aggiuntiva.
Suppongo che Application_AuthenticateRequest
non sia il posto giusto per farlo, ma forse lo è. Ma fondamentalmente abbiamo bisogno di un posto dove filtrare le richieste di autenticazione. Ma in aggiunta questa implementazione mi porta ad un altro problema:
Abbiamo alcuni URL nella nostra app che consentono l'accesso anonimo. Ho aggiunto i tag <location>
al web.config per questi. Il problema è che, quando vengono effettuate chiamate anonime, arriva a Application_AuthenticateRequest
e tenta di registrare l'utente nel DB. Ora, posso aggiungere il codice a Application_AuthenticateRequest
per gestire questi URL e questo è attualmente il mio piano, ma se sto scrivendo e Application_AuthenticateRequest
non è il posto giusto per farlo, allora preferirei capirlo ora più tardi.
mi piace questa soluzione, ma ho ancora ottenere 401 errori sul metodi di controllo che dovrebbero consentire a chiunque. In questo caso particolare, lo chiamo da una chiamata C# 'HttpWebRequest.GetResponse()'. 'DebugController.FlushCaches()' ha [AllowAnonymous] e nel 'web.config' ho un tag' 'per' Debug/FlushCaches' che ha ' '. Ma quando il mio 'HttpWebRequest' chiama, ho un 401. –
Pete
Utilizzare questo come tag: ' authorization> ' –
ataravati
http://stackoverflow.com/questions/15087755/use-anonymous-authentication-in-mvc4-on-single-controller-when-the-whole-applica – ataravati