У нас есть приложение MVC, которое имеет настраиваемый вид проверки подлинности форм / контроллер. Контроллер проверяет вещи и затем выполняет вызов FormsAuthentication.RedirectFromLoginPage.
В этот момент в Global.asax мы получим вызов Application_OnAuthenticateRequest, откуда мы получим их Context.User информацию и сделаем еще один вызов, чтобы собрать информацию, относящуюся к этой учетной записи, которую мы затем сохраним в их Context.User & System.Threading.Thread.CurrentPrincipal. Мы также делаем небольшое кеширование этой информации, так как в нашей системе получение того, что нам нужно, обходится дорого, что приводит к аннулированию кэша и повторному поиску этой информации.
Кажется немного странным, что мы разделили их на отдельные вызовы. Я почти задаюсь вопросом, не должен ли Контроллер входа собирать детали как часть своей проверки подлинности и сохранять их. Тогда Application_OnAuthenticateRequest может беспокоиться только о том, нужно ли сделать кэш недействительным, а данные пользователей повторно получены.
Или, может быть, есть какой-то другой способ справиться с этим, о котором я даже не знаю ...?