将用户数据存储在静态类中

时间:2014-09-18 12:40:13

标签: c# asp.net

我正在创建一个登录系统,我想要一种方法来排序缓存信息,而无需从数据库中检索相同的信息。

例如,我将有一个名为tokenData的静态类。令牌数据将是一个私有类,用于存储登录令牌,用户名,expireDate等。因此,每次访问另一个页面时,它都会检查静态类的数据。然后将令牌存储在session / cookie中以产生查找。如果数据不在令牌静态类中(例如,应用程序池重新启动),那么它将在用户登录时检查数据库以查找记录,并根据令牌表中的数据创建另一个。

有人可以向我提出任何建议吗?这是可以接受的做法,还是为我提供改进和可能出现的问题?

一个例子是

public class userToken
{
      private string name;
      private string tokenId;         

      private static List<userToken> userData = new List<userToken>();

      public void add(userToken);
      public userToken Find(string tokenId);
}

2 个答案:

答案 0 :(得分:1)

永远不要将static用于用户或会话特定数据。所有会话都共享static!您最终可能会收到共享机密数据的用户会话。

使用HttpContext.SessionHttpContext.Cache

答案 1 :(得分:0)

在具有单个用户的多个服务器上运行时,您的解决方案可能会引入错误。您正在构建的缓存不是线程安全的。当您的应用程序在群集中的2个以上服务器上运行时(负载平衡),它也会引入错误。

我会考虑使用适当的缓存工具集(memcached等)