Это может быть самая странная вещь, которую я когда-либо видел. Я обнаружил, что если я делаю это, это работает:
options.Cookie.Domain = "mydomain.com";
Однако, если я добавлю это же значение в appSettings. json и прочту его оттуда. То же самое точное значение, оно не работает.
Я отладил его локально и обнаружил, что моя переменная каким-то образом:
var cookieName = Configuration.GetValue<string>("SharedCookies:CookieName");
, которая объявлена прямо перед вызовом здесь, выходит за рамки, где я использую его .... хотя переменная, которую я объявил прямо рядом с ней, совершенно нормально. Я понятия не имею, как это вообще возможно, поэтому я подумал, что попробую переместить декларации:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
var cookieDomain = Configuration.GetValue<string>("SharedCookies:CookieDomain");
var cookieName = Configuration.GetValue<string>("SharedCookies:CookieName");
options.LoginPath = new PathString("/Account/SignIn");
options.Cookie.Name = cookieName;
options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
options.Cookie.Domain = cookieDomain;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
})
.AddOktaMvc(oktaMvcOptions);
И ... Нет, все еще не работает. Единственный способ заставить его работать, это ввести домен напрямую. Если я перебираю код построчно, я устанавливаю то же значение, что и для переменной. Это так странно.
Если у кого-то есть идеи, как это возможно, пожалуйста, дайте мне знать.