У меня 2 приложения
- Приложение A
- Приложение Б
Я сталкиваюсь с этой проблемой:
- Запустить приложение A и B,
- Войдите в приложение B, а затем обновите приложение A
- Приложение A остается на странице входа в систему
- Попробуйте войти в приложение A, получить перенаправление на страницу входа (неправильно)
хотя отладчик показывает, что его успешно
Я могу войти, если я сделаю это:
- Запустить приложение A и B
- Войдите в приложение A, а затем обновите экран приложения B
- Приложение B перенаправлено на домашнюю страницу (правильно)
В первом сценарии я заметил, что, хотя я обновил страницу Приложения A, общий cookie не появлялся в инструментах отладчика.
Во втором сценарии общий файл cookie появляется при обновлении страницы.
Это моя конфигурация, используемая в обоих стартапах
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.Configure<IdentityOptions>(options =>
{
options.Password.RequireDigit = false;
options.Password.RequireLowercase = false;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = false;
options.SignIn.RequireConfirmedEmail = false;
options.SignIn.RequireConfirmedPhoneNumber = false;
});
services.AddDataProtection()
.PersistKeysToFileSystem(KeyRingConfigurationManager.GetBasePath())
.SetApplicationName("Unity");
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.Name = ".Unity.Shared";
options.Cookie.SameSite = SameSiteMode.Lax;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
options.Cookie.Path = "/";
options.Cookie.Domain = "localhost";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(5);
options.LoginPath = "/Identity/Account/Login";
options.AccessDeniedPath = "/Account/AccessDenied";
options.SlidingExpiration = true;
});