我正在创建一个登录系统,我想要一种方法来排序缓存信息,而无需从数据库中检索相同的信息。
例如,我将有一个名为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);
}
答案 0 :(得分:1)
永远不要将static
用于用户或会话特定数据。所有会话都共享static
!您最终可能会收到共享机密数据的用户会话。
答案 1 :(得分:0)
在具有单个用户的多个服务器上运行时,您的解决方案可能会引入错误。您正在构建的缓存不是线程安全的。当您的应用程序在群集中的2个以上服务器上运行时(负载平衡),它也会引入错误。
我会考虑使用适当的缓存工具集(memcached等)