1

不久前,我创建了一个简单的登录表单,该表单进入数据库并下拉用户登录信息。现在我通过使用来做到这一点global variables;没有意识到它们是服务器端变量而不是客户端。所以发生的情况是,假设我在一台计算机上登录,使用该站点的所有其他用户都将以我的身份登录。

所以我的问题是。

A)有没有办法将全局变量设置为客户端,这样只有使用该电脑的人才会受到变量变化的影响。

B)是否有使用全局变量的替代方法;这样我就可以在页面之间传递数据,就像全局变量一样。

我尝试过使用查询字符串。虽然他们工作。我发现它们有点繁琐,因为您必须解析它们,并且每次离开每一页时;您必须将它们发送到新页面。

4

2 回答 2

2

我认为ASP.NET 会话状态将非常适合您的需求。另一种方法是使用cookie,如果您需要在给定用户的浏览器会话中保存信息,这可能是一个更好的解决方案。但请注意,cookie 不应用于存储敏感信息(如密码)。

于 2013-03-01T18:21:21.617 回答
1

创建一个类,该类包含您在用户登录时从数据库中检索到的所有用户信息:

public class User {
   public string Name {get; set;}
   public int Id {get; set;}
}

创建访问 User 属性的会话级属性。此属性应存在于引用 User 对象的每个页面上。或者,您可以创建一个包含此属性的基本页面。

public User CurrentUser
{
   get {
      if(Session["User"] == null)
         return null;

      return (User)Session["User"];
   }
   set {
      Session["User"] = value
   }
}

现在,每次你引用这个属性时,你只需要检查对象是否为空。如果为空,则没有登录用户:

if(this.CurrentUser == null) {
   //no logged-in user
}
else {
   //the user is logged in
}
于 2013-03-01T18:35:54.630 回答