2009-03-03 3 views
0

Voici la situation:Existe-t-il un moyen meilleur et/ou plus facile de se déconnecter?

  1. utilisateur se connecte via le nom d'utilisateur/mot de passe stocké dans une base de données MSSQL
  2. Si l'utilisateur est authentifié, le système fait une variable de session avec nom d'utilisateur/mot de passe SHA1'd et booléen si l'utilisateur est connecté ou non (pour les pages suivantes)
  3. Je dois être capable de détruire la variable de session. Je veux aussi une boîte de confirmation.

C'est ce que j'ai jusqu'à présent:

<script type="text/javascript"> 
    //<![CDATA[ 
    function doLogout() { 
     try { 
      var conf = false; 
      conf = confirm("Really log out?"); 
      if (conf === true) { 
       $.post("logout.aspx"); 
      } 
     } catch (ex) { 
      alert(ex); 
     } 
    } 
    //]]> 
</script> 

Comme il est une demande ajax ne recharger la page (la fonctionnalité fonctionne très bien, la demande détruit la session), je pense que je dois une approche différente pour le faire. J'aimerais vraiment pouvoir tout faire dans ASP.NET si possible.

Toute solution est la bienvenue, tant que # 3 ci-dessus est remplie.

Répondre

1

Eh bien, pour commencer votre solution dépend de l'utilisateur ayant Javascript, s'ils ne le font pas ils ne pourront pas se déconnecter. Je ne pense pas que vous devriez utiliser AJAX pour cela, juste un simple lien/bouton pour logout.aspx serait bien, qui pourrait alors correctement les rediriger vers la page d'accueil avec l'état «déconnecté». Vous pouvez ensuite utiliser un Javascript discret pour ajouter la confirmation.

la version jQuery (puisque vous avez mentionné que):

<a href="logout.aspx" id="logout-link">Logout</a> 
<script type="text/javascript"> 
    //<![CDATA[ 
    $(document).ready(function() { 
     $('#logout-link').click(function() { 
      return confirm("Really log out?"); 
     }); 
    }); 
    //]]> 
</script> 

Version pure Javascript:

<a href="logout.aspx" id="logout-link">Logout</a> 
<script type="text/javascript"> 
//<![CDATA[ 
window.onload = function() { 
    if(!document.getElementById) return; 
    document.getElementById('logout-link').onclick(function() { 
     return confirm("Really log out?"); 
    }); 
} 
//]]> 
</script> 
+0

Merci! Cela fonctionne juste parfait. J'ai besoin de rafraîchir mon javascript, ça fait quelques années: P – Anders

Questions connexes