C# ASP.net多个用户登录

C# ASP.net多个用户登录,c#,asp.net,C#,Asp.net,关于时钟输入/输出站点。当用户A登录时,它会显示他的签入/签出。然后用户B登录。当A刷新页面时,他得到B的签入/签出。 我可能这样做是错误的,因为当用户登录服务器端c#时,我会将用户名存储在一个公共变量中,通过不同的页面检查站点上的许多其他权限 if (publiclasses.isValid == true) { publiclasses.unilogin = UserNametextbox.Text.ToString(); publiclass

关于时钟输入/输出站点。当用户A登录时,它会显示他的签入/签出。然后用户B登录。当A刷新页面时,他得到B的签入/签出。
我可能这样做是错误的,因为当用户登录服务器端c#时,我会将用户名存储在一个公共变量中,通过不同的页面检查站点上的许多其他权限

   if (publiclasses.isValid == true)
     {
        publiclasses.unilogin = UserNametextbox.Text.ToString();
        publiclasses.Checkifmissinglogout();
        Response.Redirect("checkin.aspx");
     }

如何以不同的方式保存用户,使其始终保持“唯一”,而不仅仅覆盖存储的旧用户?

使用公共变量将在所有用户会话中共享,并引入并发问题,所有这些都假设它是静态的

要将其分离,必须使用会话

例:


您必须确保在引用当前公共变量的任何代码段中使用会话变量

您需要为用户实现某种if标识。有很多方法可以做到这一点,但这取决于最适合您的确切ASP.NET变体。大多数web应用程序都使用它

基本上,当用户A登录时,他们会得到一个cookie,上面写着他们是A。他们随后提出的每个请求都会附加该cookie,您可以从中获得他们是哪个用户

简单来说,这很容易:

// In sign in POST back
Response.Cookies.Append("user", username);

// In further pages:
string username = Request.Cookies["user"];

然而,这将使B很容易伪装成A,这是不安全的。内置的.NET方法将创建一个更安全的加密cookie。

能否显示更多的代码、登录和数据检索。这还不足以看出哪里出了问题。您将数据存储在哪里?(在会话中,数据库中的本地存储?)尝试为多个用户使用cookie或会话。更好地使用能够轻松处理用户的会话。我在你的代码中看不到类似的东西。
// In sign in POST back
Response.Cookies.Append("user", username);

// In further pages:
string username = Request.Cookies["user"];