57 votes

ASP.NET l'Authentification Windows déconnexion

Comment pensez-vous vous déconnecter lorsque vous utilisez l'authentification Windows dans ASP.NET comme ce site web.config?

<authentication mode="Windows" />

J'ai déjà essayé ce qui suit, sans succès. Il redirections, mais ne vous déconnectez pas l'utilisateur.

void logoutButton_Click(object sender, EventArgs e) {
    HttpContext.Current.Session.Clear();
    HttpContext.Current.Session.Abandon();
    ViewState.Clear();
    FormsAuthentication.SignOut();
    Response.Redirect("/");
}

Informations De Fond:

J'ai pour utiliser l'authentification Windows parce que j'ai besoin d'emprunter l'identité à l'aide d'Active Directory pour accéder aux fichiers locaux. Et je ne peut pas usurper l'identité à l'aide de l'authentification par Formulaires, car l' HttpContext.Current.User.Identity ne sera pas un WindowsIdentity. http://stackoverflow.com/questions/1066275/impersonate-using-forms-authentication

42voto

Robert Points 3844

Pas de serveur-côté bouton de déconnexion fonctionnera lors de l'utilisation de "Windows" authentification. Vous devez utiliser des "Formes" d'authentification si vous voulez un bouton de déconnexion, ou de fermer le navigateur de l'utilisateur.

24voto

Garry English Points 1875

Pour IE uniquement pour les navigateurs, vous pouvez utiliser le code javascript suivant pour déconnecter l'utilisateur si vous utilisez l'Authentification Windows. (Remarque: la fermeture du navigateur n'est pas obligatoire, mais recommandée, car l'utilisateur peut être en utilisant un non-IE).

Si l'utilisateur clique sur "Non" pour fermer le navigateur, l'utilisateur sera invité à entrer un nom d'utilisateur/mot de passe s'ils tentent d'accéder à une page sur le site qui requiert une authentification.

try {
   document.execCommand("ClearAuthenticationCache");
}
catch (e) { }
window.close();

Ce code a été prise à partir de SharePoint Signout.page aspx.

15voto

tribus Points 679

L'authentification Windows fonctionne au niveau de IIS en passant votre Windows jeton d'authentification. Depuis l'authentification se produit au niveau de IIS que vous ne pouvez vous déconnecter de l'application du code. Cependant, il semble y avoir une réponse à votre problème ici. C'est la deuxième question abordée et consiste essentiellement à l'aide de l'Authentification par Formulaires et les LogonUser api de Windows.

6voto

Eric Points 76

J'ai eu une application SharePoint avec l'authentification Windows, j'avais besoin de déconnexion automatique après 15 minutes. J'ai mélangé certains codes et voici le résultat. il fonctionne dans IE correctement.

<script type="text/javascript">
var t;
window.onload = resetTimer;
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;

function logout() {

    try {
        document.execCommand("ClearAuthenticationCache");
        window.location.href = window.location.protocol.replace(/\:/g, '') + "://" + window.location.host + "/_layouts/customlogin14.aspx";
    }
    catch (e) { }

}

function resetTimer() {
    window.clearTimeout(t);
    t = window.setTimeout(logout, 900000);
} 

mettre ces codes dans votre page maître, après 15 minutes d'inactivité fois que vous verrez la page de connexion. espérons que cela aide quelqu'un

3voto

Scott Points 3192

J'ai ce travail à l'aide de JavaScript dans IE et Firefox, s'il vous déconnecte de tout ce que vous êtes connecté dans IE. Ça fonctionne dans Safari, mais Safari lance une notification de phishing. Ne fonctionne pas à l'Opéra.


    try { 
        if (document.all) 
        { 
            document.execCommand("ClearAuthenticationCache"); 
            window.location = "/"; 
        } 
        else 
        { 
            window.location = "http://logout:logout@example.com"; 
        } 
    } 
    catch(e) 
    { 
        alert("It was not possible to clear your credentials from browser cache. Please, close your browser window to ensure that you are completely logout of system."); 
        self.close(); 
    } 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X