У нас есть пользовательский поставщик cookie cookie, который ставит для файла cookie auth имя хоста, такого как .domain.com вместо domain.com или my.domain.com. Мы делаем это, чтобы файлы cookie работали во всех субдоменах и доменах. Это так просто, как показано ниже.
Вопрос
При первой же попытке после холодного запуска приложения cookie STILL несет домен my.domain.com (наши логины находятся на my.domain.com) DESPITE, устанавливая его на .domain.com после выполнения кода SubdomainCookieAuthentication ниже (проверяется с помощью контрольных точек). При последующих попытках входа в систему имя хоста cookie прекрасное.
Вопрос
Как я могу исправить это, чтобы он работал даже с первой попытки?
код
Пользовательский файл cookie
public class SubdomainCookieAuthentication : CookieAuthenticationProvider
{
public override void ResponseSignIn(CookieResponseSignInContext context)
{
// We need to add a "." in front of the domain name to
// allow the cookie to be used on all sub-domains too
var hostname = context.Request.Uri.Host;
// works for www.google.com => google.com
// will FAIL for www.google.co.uk (gives co.uk) but doesn't apply to us
var dotTrimmedHostname = Regex.Replace(hostname, @"^.*(\.\S+\.\S+)", "$1");
context.Options.CookieDomain = dotTrimmedHostname;
base.ResponseSignIn(context);
}
}
Это инициализируется внутри класса запуска Owin следующим образом
Класс: Startup
Файл: App_start\Startup.Auth.cs
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new SubdomainCookieAuthentication()
});
}