在Webforms ASP.net上为每个用户创建唯一会话

时间:2014-08-06 17:14:32

标签: c# asp.net session

我们目前正在ASP.net上开发一个简单的系统,它将同时被用户使用。我想要发生的是让每个用户'每次登录系统时都会从SQL表中Name(或任何其他有用的信息)并始终使用这些数据(注意:每个用户的数据应该是唯一的。)

现在我的问题是,在这种情况下,为每个用户提供唯一变量/会话的正确方法是什么?如果我想让这个变量成为全局变量怎么办?

示例场景:医生登录系统,后面的代码从表中获取他的名字并提示主页上的数据 - "欢迎医生John!" (假设他的名字是医生约翰。另一个用户登录系统,分别得到他的名字和提示,现在如果第一个用户 - 约翰,刷新页面,这就是我想要避免的冲突,就会发生冲突。

关于此事,我可以阅读哪些文章?任何帮助将不胜感激。

免责声明:对于ASP.net,我仍然是初学者,所以我为这么简单的问题道歉。

2 个答案:

答案 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
}

您可能会看到:Exploring Session in ASP.NET - Code Project

答案 1 :(得分:2)

只需使用内置会话管理。它对用户来说是独一无二的。 默认情况下,会话管理在用户浏览器中存储cookie 识别它们。只有会话ID存储在用户浏览器中,其他信息(在您的情况下为名称)存储在服务器上。例如,如果您有多个Web服务器并且希望使用单个点来存储数据,则可以定义会话数据库。

如果你有一个网络服务器,它很容易开箱即用。

设置会话变量。

Session["UserName"] = yourUsernameVariable;

检索会话变量。

var userName = Session["UserName"];

以下是一些教程。