У меня есть 2 приложения, которые делят куки между ними.Это конфигурация в файле startup.cs:
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.Name = Environment.GetEnvironmentVariable(CONST.CookieName);
options.Cookie.SameSite = SameSiteMode.Lax;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
options.Cookie.Path = Environment.GetEnvironmentVariable(CONST.CookiePath);
options.Cookie.Domain = Environment.GetEnvironmentVariable(CONST.CookieDomain);
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(Convert.ToDouble(Environment.GetEnvironmentVariable(CONST.CookieExpiryTimeSpanInMinutes)));
options.LoginPath = Environment.GetEnvironmentVariable(CONST.LoginPath);
options.AccessDeniedPath = Environment.GetEnvironmentVariable(CONST.AccessDeniedPath);
options.SlidingExpiration = true;
});
Проблема теперь в том, что если я загружаю приложение A и приложение B вместе, войдите в приложение A, а затем нажмите «Войти в приложение B», я получу BadОшибка запроса.Я попытался отладить приложение B, чтобы проверить, почему оно получало эту ошибку, и обнаружил, что когда я вошел в приложение A и попытался войти в приложение B, приложение не знает, что я уже прошел проверку подлинности.
if (User.Identity.IsAuthenticated)
{
return LocalRedirect(returnUrl);
}
Строка выше всегда ложна.
Есть ли способ предотвратить эту проблему?Или есть способ проверить, был ли уже установлен файл cookie?
РЕДАКТИРОВАТЬ:
Я установил ключ защиты данных для всех приложений:
var ds = new DirectoryInfo("PathTOKey");
services.AddDataProtection()
.PersistKeysToFileSystem(ds)
.SetApplicationName("DPName");