2010-05-19 93 views
9

在javascript alert(document.cookie);不顯示.ASPXAUTH餅乾雖然嗅探器顯示它,Where is .ASPXAUTH cookie

我需要它,因爲我有一個AJAX請求到服務器,請求不應該發生,當用戶已經登錄,

如果我無法檢查.ASPXAUTH出於安全原因,我應該怎麼做,以檢查用戶是否已經登錄。

感謝

回答

9

身份驗證cookie被標記爲僅HTTP,這意味着它無法通過JavaScript訪問。如果您想檢查用戶是否已通過身份驗證,只需輸出一個javascript變量,一個隱藏字段或您希望從代碼隱藏的任何內容即可。然後你可以在JS中輕鬆檢查。

+2

這比由於安全原因將httpOnlyCookies設置爲false要好。 – Costa 2010-05-20 06:34:24

4

有一個.ASPXAUTH cookie集,你顯然是正確的。它是用來當用戶以確定是否登錄

要得到你需要查看你的web.config的配置部分:

<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> 

當用戶已通過認證的cookie將被設置基於名稱=「ExampleSite.FormsAuthentication」參數。它將在註銷後或會話過期後過期。您將在Chrome/FFX上看到一個cookie,或者您正在使用的任何瀏覽器都會以加密值調用ExampleSite.FormsAuthentication。顯然你使用的名稱參數是不同的,而不是ExampleSite.FormsAuthentication,但你明白了。

您可以隨時檢查並查看cookie是否存在。如前所述,要小心http-only(與JS的關係)。因爲你也可以在web.config中重寫這個值,所以你可以用JS訪問它。

<httpCookies httpOnlyCookies="false" requireSSL="false" domain="" /> 
相關問題