Итак.Оказывается, что в настоящее время Овин будет работать таинственным образом, если в нем не будет предварительно существующего файла cookie ASP.NET_SessionID.Без этого функция signin-facebook не удаляет cookie-файл .Aspnet.Correlation.Facebook и не устанавливает cookie-файл .Aspnet.ExternalCookie.Отсутствие файла cookie идентификатора сеанса каким-либо образом препятствует выполнению требуемой обработки файла cookie.Все это создает условия для периодических сбоев в режиме без вывода сообщений, в зависимости от состояния файла cookie клиента.
Обходной путь - сохранить поддельную переменную Session при создании формы с помощью входа в Facebook, что вызывает создание файла cookie SessionID перед любымOwin logins.
Обратите внимание, что мы используем SystemWebCookieManager (в надежде избежать таких проблем с cookie).Похоже, что вещи все еще развиваются.
Для справки, вот настройка cookie в нашей функции ConfigureAuth:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieManager = new SystemWebCookieManager(),
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
ExpireTimeSpan = TimeSpan.FromMinutes(Params.LoginExpiryMinutes),
SlidingExpiration = true,
LoginPath = new PathString("/Login"),
Provider = new CookieAuthenticationProvider // Used to allow returning 401 Unauthorized status to API calls, instead of 302 redirect
{
OnApplyRedirect = ctx =>
{
if (!IsAjaxRequest(ctx.Request))
{
ctx.Response.Redirect(ctx.RedirectUri);
}
}
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);