You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同服务器部署的两个Azure AD认证MVC应用登录后互踢登出问题

问题根因

两个应用部署在同一域名/IP下时,默认使用完全相同的认证Cookie名称.AspNet.Cookies和会话Cookie名称ASP.NET_SessionId,后登录的应用生成的Cookie会直接覆盖前一个应用的同名Cookie,导致前一个应用的本地认证信息丢失,因此actionContext.RequestContext.Principal.Identity.IsAuthenticated会返回False。

解决方案

按以下步骤分别修改两个应用的配置即可解决:

  • 配置独立的认证Cookie名称
    在ConfigureAuth方法的CookieAuthenticationOptions配置段中,为每个应用设置唯一的Cookie名称,若应用部署在同一域名的不同子路径下,还可新增CookiePath参数强化隔离:
    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            // 两个应用分别设置不同的Cookie名称,比如AppA用.AppA后缀,AppB用.AppB后缀
            CookieName = ".AspNet.Cookies.AppA",
            // 若用子路径隔离可增加此行,对应各自的应用部署路径
            // CookiePath = "/AppA",
            AuthenticationType = CookieAuthenticationDefaults.AuthenticationType,
            SlidingExpiration = true,
            Provider = new CookieAuthenticationProvider
            {
                OnResponseSignIn = context =>
                {
                    context.Properties.AllowRefresh = true;
                    context.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddDays(1);
                },
                OnValidateIdentity = MyCookieValidateIdentity
            },
            ExpireTimeSpan = TimeSpan.FromDays(2)
        });
        // 原有OpenIdConnect配置保持不变
        ...
    }
    
  • 配置独立的会话Cookie名称
    修改应用根目录下的web.config文件,在<system.web>节点下新增sessionState配置,两个应用分别设置不同的会话Cookie名:
    <system.web>
        <!-- AppA的配置,AppB修改为ASP.NET_SessionId.AppB即可 -->
        <sessionState cookieName="ASP.NET_SessionId.AppA" />
        <!-- 原有其他配置保持不变 -->
        ...
    </system.web>
    

验证效果

修改配置后重新部署两个应用,登录后查看浏览器的Cookie存储,可以看到两个应用的认证Cookie、会话Cookie均独立存在,不会互相覆盖,跨应用切换时登录状态可正常保留。

内容的提问来源于stack exchange,提问作者Hunterr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:45:08