在我的 asp.net 网站上,我启用了需要用户登录的会员功能。我想将用户名存储在会话数据中,以便在他们登录后使用该查询。
在我的登录页面上,我有以下代码来存储会话数据,但它不起作用:
Session["UserName"] = System.Web.HttpContext.Current.User.Identity.Name;
查询不会加载任何结果,因为控制参数 (session[username]) 返回空。
谁能建议它不起作用的原因是什么?
在我的 asp.net 网站上,我启用了需要用户登录的会员功能。我想将用户名存储在会话数据中,以便在他们登录后使用该查询。
在我的登录页面上,我有以下代码来存储会话数据,但它不起作用:
Session["UserName"] = System.Web.HttpContext.Current.User.Identity.Name;
查询不会加载任何结果,因为控制参数 (session[username]) 返回空。
谁能建议它不起作用的原因是什么?
通常在下一页加载之前用户信息不可用。
您可能必须在登录后重定向到“跳跃”页面并重定向回用户请求的页面。
这是使用 MVC 的方法
登录:
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
return Hop(returnUrl);
}
}
跳页:此时用户信息实际上是可用的。
public ActionResult Hop(string returnUrl)
{
Session["UserName"] = User.Identity.Name;
return Redirect(returnUrl);
}
If you are using the membership providers you should use their classes to grab user information. Try using
Session["UserName"] = Membership.GetUser().UserName
您是否在页面上使用登录控件?如果是这样,您可以直接从控件中获取用户名,如下所示:(假设登录控件名为 loginControl)
Session["UserName"] = loginControl.UserName;