我们目前正在ASP.net上开发一个简单的系统,它将同时被用户使用。我想要发生的是让每个用户'每次登录系统时都会从SQL表中Name
(或任何其他有用的信息)并始终使用这些数据(注意:每个用户的数据应该是唯一的。)
现在我的问题是,在这种情况下,为每个用户提供唯一变量/会话的正确方法是什么?如果我想让这个变量成为全局变量怎么办?
示例场景:医生登录系统,后面的代码从表中获取他的名字并提示主页上的数据 - "欢迎医生John!" (假设他的名字是医生约翰。另一个用户登录系统,分别得到他的名字和提示,现在如果第一个用户 - 约翰,刷新页面,这就是我想要避免的冲突,就会发生冲突。
关于此事,我可以阅读哪些文章?任何帮助将不胜感激。
免责声明:对于ASP.net,我仍然是初学者,所以我为这么简单的问题道歉。
答案 0 :(得分:4)
Session是您保留此信息的地方。它对每个用户都是独一无二的。在ASP.NET Session State Overview
了解更多相关信息请记住,每个用户都在服务器上维护会话。它们很昂贵。因此,如果您在会话中保留了太多数据,那么您最终可能会在服务器上声明更多资源。
请考虑以下示例,从数据库中检索对象中的UserInfo
。
UserInfo userInfo = GetUserInfoFromDB();
在会话中存储信息:
//once user is authenticated
//store session
Session["UserInfo"] = userInfo;
要检索信息:
UserInfo currentUserInfo = Session["UserInfo"] as UserInfo;
if(currentUserInfo != null)
{
//info found
// assign lable Text currentUserInfo.UserName etc
}
答案 1 :(得分:2)
只需使用内置会话管理。它对用户来说是独一无二的。 默认情况下,会话管理在用户浏览器中存储cookie 识别它们。只有会话ID存储在用户浏览器中,其他信息(在您的情况下为名称)存储在服务器上。例如,如果您有多个Web服务器并且希望使用单个点来存储数据,则可以定义会话数据库。
如果你有一个网络服务器,它很容易开箱即用。
设置会话变量。
Session["UserName"] = yourUsernameVariable;
检索会话变量。
var userName = Session["UserName"];
以下是一些教程。