我一直在会话变量中为用户(登录后)存储数据,因此我可以在任何页面上使用该数据。
我发现另一种方式在全球范围内存储的信息,将其存储在一个类中,使用{ get; set;}
,然后调用从任何页面。会话存储vs类存储
现在,我已经使用这两种方法的测试,他们都工作得很好:
Session["LoginId"] = rdr["uniqueIdentifier"].ToString();
而且
Member.LoginId = rdr["uniqueIdentifier"].ToString();
如果(在会员。 CS)
public class Member
{
public static int Challenges { get; set; }
public static int NicknameId { get; set; }
public static string LoginId { get; set; }
public static string FriendsListId { get; set; }
public static void ClearVariables()
{
Challenges = 0;
NicknameId = 0;
LoginId = null;
FriendsListId = null;
}
}
的Global.asax
void Session_End(object sender, EventArgs e)
{
Member.ClearVariables();
}
我的问题是,是否足够安全的存储在像这样一类的用户数据,或者我应该坚持Session
对象?
更新了完备 将这个帖子做这样的事情上面,但是对于多用户? How to access session variables from any class in ASP.NET?
是的,这是一个单用户系统。您是否尝试将其与多个用户一起使用? –
还没有。我只在测试中使用过这个。 – TheGeekZn
即使使用Session也是一个问题。如果您需要在负载均衡器后面使用多个服务器,则需要确保每个用户请求始终都转到同一台服务器上,以便它们始终具有相同的会话。这可以通过粘性IP地址来完成,但会缩短; [负载平衡器的粘性会话有什么不利之处?](http://serverfault.com/questions/46307/what-is-the-downside-to-sticky-sessions-with-load-balancers) –