0

在我的网站上,我在母版页上(在标签中)显示登录用户名,如下所示,通过从会话对象中提取用户名并将其放入母版页上的标签 page_init 页面事件中。我的问题是我现在绕过会话,因为超时问题我不会让大家厌烦,但现在我需要更改代码以将用户名弹出到母版页标签一次,然后不要尝试再次访问会话,因为它会清除由于 IIS 池,大约 10 分钟后。我意识到每次加载母版页以检索用户名时,我都可以打开与数据库的新连接,但我认为可能有比这更简单的方法。任何帮助将非常感激。

Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
txtUserInfo.Text = (Session("name") & " [ " & Session("org") & " ]") End Sub

4

2 回答 2

2

仅对于用户名,Humpy 的回复就足够了(假设线程主体/身份已正确填充)。如果您需要更多信息,可以使用 cookie:

登录后,将 cookie 设置为合理的过期时间:

Response.Cookies["userInfo"]["name"] = "currentUsername";   
Response.Cookies["userInfo"]["org"] = "currentOrg";   
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

在后续请求中,您可以从 cookie 中提取数据:

if(Request.Cookies["userInfo"] != null)
{
   HttpCookie c = Request.Cookies["userInfo"];
   txtUserInfo.Text = Server.HtmlEncode(c["name"]) & " [" & Server.HtmlEncode(c["org"]) & "]";
}

有关详细信息,请参见此处:http: //msdn.microsoft.com/en-us/library/ms178194.ASPX

于 2013-11-11T15:23:03.740 回答
0

你应该可以使用..

txtUserInfo.Text = User.Identity.Name;

这就是我使用我的方式。用户登录后,完美显示用户名。希望这可以帮助!

于 2013-11-11T14:24:44.580 回答