У меня есть область сведений о пользователе, которая разделена на 6 разных страниц (подробности, контакт, настройки и т. Д.). Мне нужно иметь доступ ко всем деталям пользователя после входа в систему.Сессия MVC для хранения пользовательской информации и вызова БД
Я собирался добавить данные пользователя на сеанс, подобные этому после входа в систему, чтобы я мог получить доступ ко всем этим с разных страниц без необходимости вызова базы данных на каждой странице;
Session["name"] = name;
Session["bla"] = bla;
Однако я гугл и некоторые люди говорят о сохранении сессии в базу данных, которая звучит, как я, возможно, также не использовать его. Пользователи могут не получить доступ к каждой странице или потребовать доступа ко всей этой информации, поэтому ее можно рассматривать как ненужное, чтобы добавить их все в сеанс.
Есть ли рекомендуемая практика для хранения информации об этом пользователе? У меня также есть ID, который должен отображаться на каждой странице. Возможно, что-то вроде этого лучше для сеанса, а более подробные информационные страницы - для их собственных вызовов базы данных?
.
EDIT: Я использую Umbraco 7.2.8 и получаю информацию о членах от MemberService. Я беспокоюсь, что каждый раз попадает в базу данных. Мой код, чтобы получить детали участника, а также настраиваемые свойства элемента (в настоящее время на каждом контроллере);
// Get the details of the user currently logged in
var profileModel = Members.GetCurrentMemberProfileModel();
// Get the custom properties for the member
var member = memberService.GetByUsername(profileModel.UserName);
model.Firstname = profileModel.Name;
model.Email = profileModel.Email;
model.specialID = member.Properties["specialID"].Value.ToString();
Любые указатели были бы замечательными!
Я использую сессии для всего, что не требуют изменений в базе данных (не включая логины). –
Если вы обновите проект до MVC5 и воспользуетесь новыми библиотеками аутентификации Microsoft, вы можете добавить эту информацию в коллекцию Claims аутентифицированной Identity. – user65439
Хранение данных в сеансе во избежание звонков в базу данных - это прекрасная практика, особенно для данных, которые не часто меняются.Превышение «сеанса» и внесение слишком большого количества данных приведет к проблемам (пул приложений будет вынужден перерабатываться, и все сессии истекут), и это вызовет больше проблем. –