Razor Запомнить меня и заполнить информацию пользователя - PullRequest
1 голос
/ 17 февраля 2012

У меня 2 контроллера. A HomeController и AccountController. У меня есть _Layout.cshtml и частичное представление _Login.cshtml, которое отображается в разделе заголовка представления _Layout. HomeController имеет метод по умолчанию Index().

В самый первый раз пользователь видит «Есть аккаунт»? Авторизоваться. Вход в систему - это ссылка, указывающая на метод входа в AccountController. Представление «Вход в систему» ​​содержит поля «Имя пользователя», «Пароль» и флажок «Запомнить меня». Когда пользователь входит в систему в первый раз и проверяет «Запомнить меня», я звоню своему MySecurityRepository, чтобы: подтвердить пользователя и получить базовую информацию для его профиля (адрес, номер телефона, адрес электронной почты и т. Д.) И UserInfo объект заполняется, а заголовок показывает имя пользователя в виде ссылки. Это все работает.

Пользователь закрывает браузер и снова открывает сайт. Я вижу, что пользователь уже вошел в систему, Request.IsAuthenticated - это правда, но как мне снова получить профиль пользователя и кэшировать?

Вот как выглядит частичный вид _Login ...

 <div id="login">
 @if (Request.IsAuthenticated)
 {
     <text>
         [@Html.ActionLink((HttpContext.Current.Session["UserInfo"] as UserInfo).FirstName, "Profile", "Account")]
         [@Html.ActionLink("Log Off", "LogOff", "Account")]
     </text>
 }
 else
 {
     <span>Have an account?</span>
     @Html.ActionLink("Log In", "LogOn", "Account")
 } </div>

Спасибо.

1 Ответ

0 голосов
/ 17 февраля 2012

Вам придется получать информацию о пользователе из бэкэнда, если она недоступна. Для этого вы можете написать дочернее действие, которое будет сначала просматривать сеанс и, если оно недоступно, извлечь его и сохранить внутри. Затем вы можете включить это дочернее действие в _Layout, используя помощник Html.Action.

...