Аутентификация роли ASP.NET разрывается с сеансом
Работая над внутренним порталом, нам нужны были определенные вещи о пользователе, поэтому мы создали свой собственный WebUser/WebUserStore, но я столкнулся со странной проблемой и надеялся, что кто-то столкнется с этим раньше.
Будучи ASP, он разбросан по всему объему кода, поэтому я не стану вставлять все это здесь. Но вот проблема:
Любое количество пользователей могут войти на домашний экран.
Если какой-либо пользователь переходит на страницу, которая выполняет какой-либо сеансовый вызов (либо параметр, либо Session.Remove()), то больше никто не сможет войти в систему, страница входа просто мигает, и вы снова на экране входа.
Любой пользователь, который вошел в систему в то время, когда один пользователь инициировал сеанс, будет по-прежнему иметь возможность выходить из системы, а также выходить из нее и входить в нее, если у него все еще есть файл cookie ASP.NET_SessionId.
Если вы удалите файл cookie ASP.NET_SessionId, этот пользователь также застрянет на экране входа в систему.
Хакерские исправления, которые могут помочь точно определить проблему (каждая из них останавливает проблему):
Переработка пула приложений в IIS сбрасывает его, чтобы каждый мог снова войти в систему.**
Установка следующего (но вы получите противный URL):
<sessionState mode="InProc" cookieless="UseUri" />
Добавьте это прямо перед вызовом IdentityHelper.SignIn (...).
Session ["ANYKEY!"] = False;
Просто добавив это пустое событие в global.asax.cs
void Session_Start(object sender, EventArgs e) { }
Это также для каждого браузера. Таким образом, на одной машине с 3 различными браузерами вы можете повторить проблему, используя только 1 пользователя. После того, как вы инициируете сеансовый вызов в одном браузере, другие браузеры, если они не вошли в систему (и имели файл cookie ASP.NET_SessionId), теперь блокируются.
Прохождение процесса входа в систему ничего не показывало, все нормально и запускается полностью через authenticationManager.SignIn (...) любой кажется нормальным, но мистически фактически не аутентифицирован и не возвращается на экран входа в систему?
Может кто-нибудь подумать о том, что не так, что, как только я коснусь сеанса, все пользователи не смогут войти в систему, и только те, у кого уже есть свой файл cookie сеанса, могут продолжить вход и выход?