如何配置ASP.NET Core Blazor实现跨子域共享Identity Cookie?
默认情况下,Identity生成的Cookie会绑定到当前请求的精确域名(比如myappdomain.com),导致子域sub.myappdomain.com无法共享登录状态。要实现跨子域免重复登录,需要显式配置Cookie的域名为主域(带前缀点的.myappdomain.com),让所有子域都能识别该Cookie。
修改你的认证配置代码,通过AddIdentityCookies的配置委托分别设置应用Cookie和外部登录Cookie的域名:
builder.Services.AddAuthentication(options => { options.DefaultScheme = IdentityConstants.ApplicationScheme; options.DefaultSignInScheme = IdentityConstants.ExternalScheme; }) .AddIdentityCookies(cookies => { // 配置主应用登录Cookie的域名 cookies.ApplicationCookie.Configure(options => { options.Cookie.Domain = ".myappdomain.com"; }); // 配置外部登录(如第三方OAuth)Cookie的域名 cookies.ExternalCookie.Configure(options => { options.Cookie.Domain = ".myappdomain.com"; }); });
关键说明
- 域名前缀的点:
.myappdomain.com格式会让Cookie作用于主域及所有子域;省略点的话,部分浏览器仅会将Cookie限制在当前精确域名下。 - 环境适配:建议通过配置文件或环境变量动态设置域名,比如读取
builder.Configuration["Auth:CookieDomain"],避免开发环境硬编码主域名。 - 安全注意:生产环境务必使用HTTPS,此时Cookie的
Secure属性会默认启用,保证Cookie仅通过加密连接传输。 - 验证配置:登录后可在浏览器开发者工具的「Application」→「Cookies」面板中,查看Cookie的
Domain属性是否为.myappdomain.com,确认配置生效。
内容的提问来源于stack exchange,提问作者Chris Chambers
相关产品推荐
相关产品推荐

