【问题标题】:Creating unique sessions per user on Webforms ASP.net在 Webforms ASP.net 上为每个用户创建唯一的会话
【发布时间】:2014-09-29 17:41:17
【问题描述】:

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

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

示例场景:一名医生登录系统,后面的代码从表格中获取他的姓名,并在首页提示数据——“Welcome Doctor John!” (假设他的名字是约翰医生。另一个用户登录系统,分别获取他的名字和提示,现在如果第一个用户 - 约翰刷新页面,就会出现冲突,这是我要避免的冲突。

我可以阅读有关此事的任何文章吗?任何帮助将不胜感激。

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

【问题讨论】:

标签: c# asp.net session


【解决方案1】:

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

如果您只有一个网络服务器,那么开箱即用非常容易。

设置会话变量。

Session["UserName"] = yourUsernameVariable;

检索会话变量。

var userName = Session["UserName"];

这里有一些教程。

【讨论】:

    【解决方案2】:

    Session 是您保存此信息的位置。它将对每个用户都是唯一的。阅读更多关于它的信息:ASP.NET Session State Overview

    请记住,每个用户的会话都在服务器上维护。它们很昂贵。因此,如果您在会话中保留了太多数据,那么您最终可能会在服务器上占用更多资源。

    考虑以下示例,您在数据库的对象中检索UserInfo

    UserInfo userInfo = GetUserInfoFromDB();
    

    在 Session 中存储信息:

    //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

    【讨论】:

    • 谢谢!选择此答案是因为答案简洁明了。
    • 会话变量中可以存储多少“数据过多”的数据?
    • @user1426542,这取决于您的服务器配置、可用内存、任何特定时间的平均用户数。这是非常主观的事情,只需保留尽可能少的数据,看看您的服务器是否可以处理它。
    猜你喜欢
    • 1970-01-01
    • 2013-10-17
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    相关资源
    最近更新 更多