2010-05-19 7 views
9

En alerte javascript (document.cookie); ne montre pas le cookie .ASPXAUTH bien qu'un sniffer montrer,Où est cookie .ASPXAUTH

J'ai besoin parce que j'ai une requête AJAX au serveur, la demande ne devrait pas avoir lieu lorsque l'utilisateur est déjà connecté,

si Je ne peux pas vérifier .ASPXAUTH pour des raisons de sécurité, ce que je dois faire pour vérifier si l'utilisateur est déjà connecté.

Merci

Répondre

9

le cookie d'authentification est marqué par http uniquement, ce qui signifie qu'il ne peut pas être accessible par javascript. Si vous voulez vérifier si l'utilisateur est authentifié, affichez simplement une variable javascript, un champ caché ou ce que vous préférez de votre code-behind. Vous pouvez ensuite vérifier cela facilement dans JS.

+2

Cela vaut mieux que de définir httpOnlyCookies sur false pour des raisons de sécurité. – Costa

4

Il existe un jeu de cookies .ASPXAUTH, vous avez évidemment raison. Il est utilisé pour déterminer si un utilisateur connecté si

Pour obtenir ce dont vous avez besoin sur votre web.config regarder pour la section de configuration:.

<authentication mode="Forms"> 
     <forms 
       loginUrl="~/login.aspx" 
       protection="All" 
       timeout="30" 
       name="ExampleSite.FormsAuthentication" 
       path="/" 
       requireSSL="false" 
       slidingExpiration="true" 
       defaultUrl="index.aspx" 
       cookieless="UseDeviceProfile" 
       enableCrossAppRedirects="false" 
       /> 
    </authentication> 

Lorsque l'utilisateur est authentifié avec succès un cookie sera mis basé sur le paramètre name = "ExampleSite.FormsAuthentication". Il expirera après la déconnexion ou après l'expiration de la session. Vous verrez un cookie sur Chrome/FFX ou quel que soit le navigateur que vous utilisez appelé ExampleSite.FormsAuthentication avec une valeur cryptée. Évidemment, le paramètre de nom que vous utilisez sera différent et pas ExampleSite.FormsAuthentication mais vous avez l'idée.

Vous pouvez toujours vérifier et voir si le cookie existe. Comme mentionné, soyez prudent avec le http seulement (par rapport à JS). Comme vous pouvez également remplacer cette valeur dans le web.config afin que vous puissiez y accéder avec JS.

<httpCookies httpOnlyCookies="false" requireSSL="false" domain="" />