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

本文关键字:创建 用户 唯一 会话 ASP Webforms net | 更新日期: 2023-09-27 18:16:52

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

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

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

有关于这件事的文章可以让我读吗?如有任何帮助,不胜感激。

免责声明:当涉及到ASP.net时,我仍然是一个初学者,所以我为这样简单的问题感到抱歉。

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

会话是保存这些信息的地方。它对于每个用户都是唯一的。阅读更多关于它的信息:ASP。. NET会话状态概述

请记住,会话是在服务器上为每个用户维护的。它们很昂贵。所以如果你在会话中保存了太多的数据,那么你可能会在服务器上占用更多的资源。

考虑下面的例子,您从数据库中检索对象中的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
}

你可能会看到:在ASP中探索会话。. NET - Code Project

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

如果你有一个单独的web服务器,它很容易使用开箱即用。

设置会话变量

Session["UserName"] = yourUsernameVariable;

检索Session变量

var userName = Session["UserName"];

这里有一些教程。

  • ASP入门教程. NET状态管理
  • ASP中的
  • 探索会话净
  • ASP。. NET会话状态概述