У меня есть аутентификация форм, и мне нужен пользовательский объект, который будет храниться в HttpContext.Current.User и в Thread.CurrentPrincipal.PostAuthenticateRequest пожаров несколько раз
Чтобы получить это, я слушаю событие PostAuthenticateRequest, а затем прочитаю из базы данных все данные пользователя, которые необходимо сохранить в HttpContext.Current.User и в Thread.CurrentPrincipal, затем я создаю пользовательские объекты IPrincipal и IIdentity и назначаю их в вышеуказанные места.
Проблема заключается в том, что по какой-то причине PostAuthenticateRequest срабатывает несколько раз для одного запроса .. Это приводит к ненужным DB туда и обратно, что производительность больно ..
Как мне решить эту проблему? (ASP.NET MVC 2)
Спасибо.
О, да! Дело с ресурсами и т. Д. Ускользнуло от меня! Спасибо за переподготовку! Я уже рассматривал кеширование. Но это также имеет последствия. Например, я прочитал из БД и сохранил разрешения Главного пользователя. Наличие в кеше не очень хорошая идея, если администратор решит изменить разрешение для пользователя - разрешения кэшированных пользователей не будут обновляться до тех пор, пока пользователь не выйдет из системы/не войдет в систему. Вам нужно попробовать свою идею с «кратким» кэшированием. Похоже, он должен соответствовать законопроекту. Большое спасибо! – Ant
Вы можете обновить кеш для текущего пользователя на странице_Инте. Затем он будет перезагружен из БД только один раз на страницу запроса. Это всегда будет происходить до того, как будут запрошены любые другие запросы, поскольку страница еще не была отображена. –