关于时钟输入/输出站点。当用户A登录时,显示他的入住/退房。然后用户B登录。当A刷新页面时,他获得B的入住/退房。 我可能做错了,因为当用户登录服务器端时,我将用户名存储在公共变量中,c#也通过不同的页面检查网站上的许多其他权限。
if (publiclasses.isValid == true)
{
publiclasses.unilogin = UserNametextbox.Text.ToString();
publiclasses.Checkifmissinglogout();
Response.Redirect("checkin.aspx");
}
如何以不同的方式保存用户,始终保持“独特”,而不仅仅覆盖存储的旧用户?
答案 0 :(得分:2)
使用公共变量将在所有用户会话中共享,并引入并发问题,所有这些都假设它是静态的。
要将其分开,您必须使用会话。
例如:
Session["unilogin"] = UserNametextbox.Text.ToString();
您必须确保在引用当前公共变量的任何代码段中使用会话变量
答案 1 :(得分:0)
您需要为用户实现某种身份。有很多方法可以做到这一点,但它取决于最适合您的确切ASP.NET变体。大多数Web应用程序都使用cookies。
基本上,当用户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。