2016-12-21 170 views
0

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

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

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

+0

你能展示更多的代码,你的登录和你的数据检索。这不足以查看出错的代码。你在哪里存储你的数据? (在会话中,数据库中的本地存储?) –

+0

尝试使用cookie或会话为多个用户。更好地使用将轻松处理用户的会话。我在你的代码中看不到任何东西。 –

回答

2

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

要分开它,你必须使用会话。

例如:

Session["unilogin"] = UserNametextbox.Text.ToString(); 

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

+0

明白了,谢谢! –

0

您需要实现某种如果身份您用户。有很多方法可以做到这一点,但它取决于最适合你的确切的ASP.NET变体。大多数Web应用程序使用cookies

基本上,当用户A登录时,他们会得到一个表示他们是A的cookie。随后他们发出的每个请求都会附加该cookie,并且您可以从中获取他们的用户。

在其最简单的很,这是很容易的:

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

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

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