关于c#:如何在asp.net中存储登录用户ID?

How to store login user id in asp.net?

我刚接触ASP.NET。我的问题是如何在ASP.NET Web窗体中保存登录用户ID?我在ASP.NET WebForm中编写的代码是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 foreach (var s in db.Users)
        {
            if (tbUserName.Text==s.user_name && tbPassword.Text == s.user_password)
            {
                if (string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
                {
                    FormsAuthentication.SetAuthCookie(tbUserName.Text, false);
                    Response.Redirect("~/");
                }
                else
                {
                    FormsAuthentication.RedirectFromLoginPage(tbUserName.Text, false);
                }
                flag = 1;
                break;
            }
            else
                flag=0;
        }
          if(flag==0)
           {
                tbUserName.ErrorText ="Invalid user";
                tbUserName.IsValid = false;
            }

    }


正如蒂姆所说,你可以用

1
User.Identity.Name

您还可以从同一对象获取authenticationType和isauthenticated属性。

一个建议是不要为所有的用户查询您的数据库,然后通过它们循环找到正确的用户。根据用户输入,您应该为唯一一个与表单发布匹配的用户查询数据库。

根据您所写的内容,看起来密码是明文的,而不是加密的,这是一个巨大的安全问题。作为.NET的新手,请看一下.NET成员资格提供程序或simplemembership或类似的模式。

祝你好运!


我建议您考虑使用Session对象来存储用户ID。Session将在该用户的站点会话期间可用。因此,您可以在站点代码的任何地方调用Session,以引用该用户ID。

例如,若要存储ID,只需执行此操作,就可以假设我们在页面加载()中。

Session["UserId"] = userID // Or wherever you get the ID from.

然后,在您的代码隐藏中,您可以这样做:

string userId = Session["UserId"]

如果用户ID是一个数字,比如说一个int,那么您需要转换用户ID:

1
2
3
int userId = 0;

int.TryParse(Session["UserID"], out userID)

到会话的快速脏链接示例:

http://asp.net-tutorials.com/state/sessions/会话/