Аутентификация роли 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 сеанса, могут продолжить вход и выход?

0 ответов

Другие вопросы по тегам