Core Identity为Azure App Service上的“ApplicationCookie.LoginPath”ASP MVC Core应用程序返回错误的URL

时间:2017-06-21 16:10:11

标签: asp.net-core asp.net-core-mvc asp.net-identity azure-web-sites

我使用ASP MVC版本1.1.2在Azure AppService上运行3个ASP MVC Core webapps。每个应用程序除主站点外还有1个临时插槽(总共6个地址)。这个问题影响了6个中的4个(不确定这是否相关,但它很奇怪)。据我所知,当用户未经过身份验证时,我从cookie身份验证中获取了错误的URL。

所有网站上的身份配置是:

        services.Configure<IdentityOptions>(options =>
        {
            // Password settings
            options.Password.RequireDigit = true;
            options.Password.RequiredLength = 8;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = true;
            options.Password.RequireLowercase = false;

            // Lockout settings
            options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
            options.Lockout.MaxFailedAccessAttempts = 10;

            // Cookie settings
            options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromMinutes(30);
            options.Cookies.ApplicationCookie.LoginPath = new Microsoft.AspNetCore.Http.PathString("/Account/LogIn");
            options.Cookies.ApplicationCookie.LogoutPath = "/Account/LogOff";
            options.Cookies.ApplicationCookie.CookieName = "ApplicationAdmin";
            options.Cookies.ApplicationCookie.SlidingExpiration = true;

            // User settings
            options.User.RequireUniqueEmail = true;

        });

截至昨天下午,它按预期工作。如果用户未经过身份验证并转到应用程序中的任何URL,则应用程序会将用户路由到:

client.mydomaim.com/Account/LogIn

从上面显示的设置中可以预期。从昨天下午开始(最近没有更新应用程序),如果用户未经过身份验证,将返回的URL是:

client:80/Account/LogIn

我将子域恢复为:80,这也发生在其他子域上。当然这会导致DNS错误,因为'client:80'不是有效的URL奇怪的是,有2个临时插槽可以使用完全相同的代码继续正常工作。

如果我在浏览器中手动输入完整登录地址,请执行以下操作:

client.mydomain.com/Account/LogIn

它按预期工作,我可以一如既往地登录并继续使用该应用程序。在此过程的某个位置,根URL会发生变化。这是缓存在某个地方吗?

可能有用的其他信息:

  • 这种情况发生在使用自定义域的主站点以及使用通用* .azurewebsites.net地址的插槽中。
  • 错误开始出现在其中一个子域上,然后传播到其他子域。直到晚上才开始在舞台上开始。
  • 其中两个临时插槽仍可按预期工作(同样,托管完全相同的代码)

任何想法都将不胜感激。我也有Azure支持票,但还没有收到他们的回复。

谢谢你, 布赖恩

0 个答案:

没有答案