文章目錄
ASP.NET Identity 修改預設 Cookie 名稱
最近專案同時有前台與後台在進行開發,過去習慣的做法是將前後台使用同一個 VS 專案 (project) 進行開發,再透過 ASP.NET MVC Area 的功能來切分,但因為這個專案的前後台會分別部署在不同的 server 中所以就拆成兩個 vs project 但仍在同一個 vs 方案 (solution) 中,結果在開發時出現同時開啟前後台時會讓 cookie 混淆(前後台會吃到對方的 user 資訊),這讓前後台的同時開發變得產生出現靈異 bug
今天就來紀錄該如何透過設定 cookie name 的方式來避免前後台 cookie 互咬
實際情況
- 預設使用
.AspNet.ApplicationCookie
來保存登入狀態 前後台帳號無法共用
後台使用
[email protected]
前台使用
[email protected]
前後台共用登入資訊
共用
.AspNet.ApplicationCookie
內容後台
後台
修改 cookie name
App_Start
–>Startup.Auth.cs
ConfigureAuth 方法中,在 app.UseCookieAuthentication 加入
CookieName
app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { // Enables the application to validate the security stamp when the user logs in. // This is a security feature which is used when you change a password or add an external login to your account. OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) }, CookieName = "backoffice" });
實際效果
前後台各使用指定的 cookie name 來紀錄登入資訊未再互相影響
後台已正確使用
[email protected]
前台已正確使用
[email protected]
心得
cookie 互相汙染的狀況在不同的 domain 下是不會發生的,只有開發環境或是測試環境可能因為資源較不足,不一定有足夠的 domain 供測試使用才會出現,但既然遇到問題當然就是藉機研究一番解決問題囉
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。