1

在我的 asp.net 网站上,我启用了需要用户登录的会员功能。我想将用户名存储在会话数据中,以便在他们登录后使用该查询。

在我的登录页面上,我有以下代码来存储会话数据,但它不起作用:

Session["UserName"] = System.Web.HttpContext.Current.User.Identity.Name;

查询不会加载任何结果,因为控制参数 (session[username]) 返回空。

谁能建议它不起作用的原因是什么?

4

3 回答 3

3

通常在下一页加载之前用户信息不可用。

您可能必须在登录后重定向到“跳跃”页面并重定向回用户请求的页面。

这是使用 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);
}
于 2013-01-03T19:29:34.053 回答
2

If you are using the membership providers you should use their classes to grab user information. Try using

Session["UserName"] = Membership.GetUser().UserName
于 2013-01-03T19:08:02.630 回答
0

您是否在页面上使用登录控件?如果是这样,您可以直接从控件中获取用户名,如下所示:(假设登录控件名为 loginControl)

Session["UserName"] = loginControl.UserName;
于 2013-01-03T22:30:48.230 回答