次層網域Cookie問題的解決方案

來源:互聯網
上載者:User

在代碼中,我是通過Request.IsAuthenticated來判斷當前請求是否被驗證的,以前全部採用www.cnblogs.com網域名稱時很正常,看來是網域名稱不同引起的。對於Form驗證,驗證是通過cookie進行的,在執行Request.IsAuthenticated時,會請求用戶端相應的Cookie, Cookie名是在web.config中指定的,比如部落格園web.config中的設定: 複製代碼 代碼如下:<authentication mode="Forms">
<forms name=".DottextCookie" loginUrl="login.aspx" protection="All" timeout="480" path="/" />
</authentication>

也就是說在執行Request.IsAuthenticated時,會執行類似這樣的代碼,HttpCookie cookie = Request.Cookies[".DottextCookie"];我們知道Cookie是與網域名稱關聯的,HttpCookie就有個Domain屬性。部落格園所遇到的問題就是次層網域不能訪問主網域名稱的cookie,登入時,部落格園的程式通過FormsAuthentication.SetAuthCookie設定Cookie, 而登入代碼是在www.cnblogs.com網域名稱下執行的,cookie的網域名稱被預設設定為www.cnblogs.com, 而我們在次層網域下就無法訪問這個cookie,如何解決這個問題呢?cookie的domain是否可以設定成對所有次層網域有效?在Google中苦苦尋覓,終於找到了一篇文章(Tips On Using SubDomain), 原來可以將cookie關聯的網域設定為".domain.ext", 部落格園的設定就是.cnblogs.com。 這樣,我在FormsAuthentication.SetAuthCookie之後,加上這樣的代碼就解決問題了:
C# 複製代碼 代碼如下:HttpCookie cookie = Request.Cookies[".DottextCookie"];
if(cookie!=null)
{
cookie.Domain = ".cnblogs.com";
Response.Cookies.Add(cookie);
}

註:
1、如果你現在還會遇到訪問次層網域要重新登入的情況,請刪除你電腦中相應的cookie檔案,路徑在C:\Documents and Settings\使用者名稱\Cookies與C:\Documents and Settings\使用者名稱\Local Settings\Temporary Internet Files中,檔案格式為:使用者名稱@www.cnblogs.com, 然後重新登入。
2、如果你發現其他與次層網域相關的問題,請及時與我聯絡。
3、如果你在訪問部落格園時,出現“Runtime Error”錯誤,那是因為剛剛更新了dll檔案,你再過1、2分鐘重新開啟IE訪問就行了。
4、現在已經全面啟用次層網域。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.