Сохранение данных сеанса ASP.NET MVC 2 при входе в систему

У меня есть реализация, подобная этой: Лучше выполнения строго типизированных сеансов ASP.NET MVC

для быстрого доступа к часто необходимым пользовательским данным ... но у меня два вопроса:

1) будет ли когда-нибудь время, когда пользователь входит в систему, но сеанс будет недействительным или сброшен? Я всегда думал, что пока пользователь вошел в систему, его сеанс действителен ...

2) Я хочу заполнить данные, когда пользователь входит в систему, но я не знаю, как получить доступ к этим данным при входе в систему. в AccountController есть метод LogOn, но, хотя есть метод FormsService.SignIn, я не вижу, где он на самом деле входит в систему, потому что Membership.GetUser () возвращает null, пока ПОСЛЕ перенаправления страницы ...

Я предполагаю, что я делаю это неправильно, и что мне не следует пытаться создать общий метод для получения сеанса, а лучше сопоставить отдельные методы со значениями сеанса и повторно заполнить их из пользовательских данных вручную, если они нулевой..

Как вы думаете?


person SelAromDotNet    schedule 26.07.2010    source источник


Ответы (1)


  1. Есть разница между сеансом и аутентификацией. Сеанс доступен для всего приложения, даже если пользователь не вошел в систему.
  2. В шаблоне проекта ASP.NET MVC 2.0 по умолчанию вы можете заполнить данные сеанса сразу после вызова FormsService.SignIn. Здесь были проверены учетные данные пользователя, и в ответ будет записан файл cookie аутентификации. При необходимости вы можете использовать предоставленное имя пользователя для получения любой информации о пользователе из базы данных.
person Darin Dimitrov    schedule 26.07.2010
comment
Однако, если сеанс каким-либо образом разрушен (например, файл web.config изменен), пользователь останется в системе, но данные сеанса, которые вы сохранили в SignIn, исчезнут. Было бы лучше, если бы был какой-то сервис / класс, который пытается получить из данных сеанса, если это возможно, но, если не может, возвращается к базе данных и восстанавливает данные в данные сеанса? - person Derek Morrison; 05.05.2011