剃刀记住我并填充用户信息

时间:2012-02-17 17:51:26

标签: asp.net-mvc razor

我有2个控制器。 HomeControllerAccountController。我有一个_Layout.cshtml和一个部分视图_Login.cshtml,它会在_Layout视图的标题部分中呈现。 HomeController具有默认的Index()方法。

第一次,用户看到有帐户?登录。登录是指向AccountController中的登录方法的链接。 “登录”视图包含“用户名”,“密码”字段以及“记住我”的复选框。当用户第一次登录并且记住我已选中时,我会呼叫我的MySecurityRepository:验证用户并获取他们的个人资料的基本信息(地址,电话号码,电子邮件等等)和填充UserInfo对象,标题将UserName显示为链接。一切正常。

用户关闭浏览器并重新打开该网站。我看到用户已经登录,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 :(得分:0)

如果用户信息不可用,则必须从后端获取用户信息。为此,您可以编写一个子操作,该操作将首先查看会话,如果它不可用,则获取它并将其存储在内部。然后,您可以使用Html.Action帮助程序在_Layout中添加此子操作。