iT邦幫忙

0

在ASP.NET 1.1的站台中無法清除ASP.NET 2.0發出的表單驗證cookie

大家好:
我架了兩個網站,一個是ASP.NET 1.1,另一個是2.0的,並將站台設為同一Domain,舉例:site11.example.com與site20.example.com。
兩台都開啟了表單驗證,也就是

<authentication mode="Forms">


<deny users="?" />

並且設了同樣的machineKey,在2.0的站台上可以驗證帳號密碼並發出表單認證的認證cookie,並且將這個cookie的Domain屬性設為example.com。

經過測試site11可以正確抓到site22發出的表單認證cookie,並且視為合法使用者。即
User.Identity.IsAuthenticated == true;

且User.Identity.Name也包含了使用者的登入帳號。

我現在遇到的問題是:我在site11的頁面中,下了FormsAuthentication.SignOut()的語法,但無法將使用者登出,認證的cookie仍然存在。但在site20中下這個語法,卻可以將使用者正確的登出,請問各位先進知道這個有可能是什麼原因嗎?

1 個回答

4
aliceyeh
iT邦新手 2 級 ‧ 2010-01-29 11:48:06
最佳解答

在 FormsAuthentication.SignOut() 之後, 自己再將 Cookie 及 Session 全部清掉咧!?
跨綱站光是 Session.Abandon, 偶爾還是會有殘留, 所以我都是Session.RemoveAll 再 Session.Abandon 清2次, Cookie 若只是清掉的話, 只會影響到目前的網站, 所以我都是將 Cookie 設為過期, 這樣子才會影響到其他網站的 Cookie

hexaium iT邦新手 4 級 ‧ 2010-02-01 10:46:18 檢舉

這個方法我也試過,但是也是很奇怪的,我無法清除這些cookie,搜尋網路上的各種方法,包括您提到的設為過期,就是無法清除,我想說是否是因為1.1與2.0版之間運作的差異。看來可能還得多實驗看看。

我要發表回答

立即登入回答