我有2个控制器。 HomeController
和AccountController
。我有一个_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>
感谢。
答案 0 :(得分:0)
如果用户信息不可用,则必须从后端获取用户信息。为此,您可以编写一个子操作,该操作将首先查看会话,如果它不可用,则获取它并将其存储在内部。然后,您可以使用Html.Action
帮助程序在_Layout
中添加此子操作。