1. Autenticazione dei moduli (più semplice, consigliato se possibile):
Se hai * qualche * flessibilità nella tua configurazione, la soluzione più semplice e pulita è passare a passare alle forme di autenticazione . L'autenticazione di Windows è inflessibile e strettamente accoppiata alla gestione dell'utente del server. L'autenticazione dei moduli consente di gestire gli account utente all'interno dell'applicazione e fornisce un meccanismo di logout semplice. Quindi, una semplice formsAuthentication.signout () `nell'azione del controller gestirà il logout.
`` `csharp
[Httppost]
Public ActionResult Logoff ()
{
FormSAuthentication.signout ();
restituire rederectoaction ("indice", "home"); // reindirizza alla tua home page
}
`` `
2. Forzando una nuova richiesta (autenticazione di Windows):
Se * devi * utilizzare l'autenticazione di Windows, è necessario attivare una nuova richiesta che forzerà una riabilitazione (o la sua mancanza). Non esiste un comando "logout" diretto; Stai essenzialmente distruggendo il cookie della sessione:
* Reindirizza a un URL speciale: Crea un'azione controller che non richiede autenticazione. Questa azione non fa nulla tranne il reindirizzamento. La parte importante è che questo reindirizzamento cancellerà il cookie di autenticazione esistente. Il browser invierà una nuova richiesta e IIS riconoscerà che non esiste una sessione valida.
`` `csharp
[Abilitanonimo] // Questo è cruciale! Consente l'accesso senza autenticazione
Public ActionResult Logoff ()
{
restituire reindirizzamento ("/"); // o per qualsiasi URL che non richiede autenticazione
}
`` `
* Clear Cookies (JavaScript sul lato client - meno affidabile): Questo approccio è generalmente meno preferito perché si basa su azioni sul lato del cliente e potrebbe non funzionare sempre in modo affidabile attraverso i browser:
`` `JavaScript
document.cookie ="asp.net_sessionid =; scade =thu, 01 gennaio 1970 00:00:00 utc; percorso =/;";
// potenzialmente necessita di linee aggiuntive per rimuovere altri cookie di autenticazione specifici per la configurazione.
window.location.href ="/logoff"; // reindirizza alla tua azione di disconnessione
`` `
Considerazioni importanti con l'autenticazione di Windows:
* Impostazioni IIS: Assicurati che le impostazioni IIS della tua applicazione siano configurate correttamente per l'autenticazione di Windows.
* Gestione della sessione: L'autenticazione di Windows si basa spesso sulla gestione della sessione del server (stato di sessione IIS). Il metodo di reindirizzamento sopra termina efficacemente la sessione forzando una nuova richiesta senza un cookie di autenticazione.
* Cancini multipli: A seconda della configurazione, potrebbero esserci diversi cookie relativi all'autenticazione. Potrebbe essere necessario liberare esplicitamente quelli espliciti (anche se il metodo di reindirizzamento di solito suoni).
* Kerberos: Se è coinvolto Kerberos (comune negli ambienti aziendali), il processo di logout potrebbe essere più complesso, poiché i biglietti Kerberos hanno il proprio ciclo di vita e la loro gestione.
Raccomandazione:
Considera seriamente di passare all'autenticazione dei moduli se hai qualche controllo sul tuo progetto. È molto più semplice gestire le sessioni degli utenti e il logout. La gestione del logout di autenticazione di Windows è intrinsecamente più complessa e meno affidabile. Gli approcci sopra funzionano, ma si basano su metodi indiretti per porre fine alla sessione di Windows. Testa sempre accuratamente attraverso browser diversi.
software © www.354353.com