【问题标题】:how to handle session in mutliple tabs in a browser in c#如何在c#中处理浏览器中多个选项卡中的会话
【发布时间】:2013-04-10 11:24:11
【问题描述】:

我正在使用 asp.net C#,无法管理每个选项卡的会话。我的网站的场景是,用户登录,然后选择一个工作,然后申请该工作,当用户申请时,在数据库中针对该请求完成一个条目。它将存储该用户的选定作业 ID 和电子邮件 ID。

我面临的问题是,如果我在浏览器中的 2 个不同选项卡中打开登录页面。输入数据被弄乱了。例如, 用户 A 选择了工作 1,用户 B 选择了工作 2,当我按下用户 B 的应用按钮时,他选择的工作和用户 A 的电子邮件 ID 被输入到数据库中。

我试图通过检查会话对象是否为 NULL/空来解决这个问题,然后才应该创建一个新会话。否则,其他用户应该得到他无法登录的错误。但我的代码并非每次都有效。它有时会给我结果,有时它只是根本不运行。这是我的代码:

protected void session_create(string s)
{
    if (string.IsNullOrEmpty((string)Session[s]))
    {
        Session[s] = s;
        test.Text = "Welcome user,  " + (string)(Session[s]);
    }
    else
    {
        test.Text = "You are Already logged in";
    }
}

然后我将此方法称为 on_submit 按钮:

session_create("email");

因为我只存储电子邮件变量,所以我正在传递电子邮件参数。

在哪里,

string email = emailtextbox.Text;

那么,有人知道我该如何解决这个问题吗?不应允许用户从同一浏览器登录多个选项卡。请帮忙。

【问题讨论】:

  • 我已经通过在 web.config 文件中添加这个参数解决了这个问题。 $' 但我不知道它是否是一个很好的解决方案。如果有人有更好的想法,请让我知道。
  • 您是否使用内置的会员系统来处理用户?
  • 这是一个现实的场景吗?两个不同的用户在同一个浏览器中使用不同的选项卡登录?
  • 一个用户也可以创建两个ID。如果他创建了两个 id 并尝试同时登录怎么办?并且恶意用户也会试图破坏我的系统。
  • @MalcolmFrexner 不,我没用过。我对 c# 有点陌生。但是谢谢这个想法。我已经开始探索它了。

标签: c# asp.net session web


【解决方案1】:

您可以通过在 WEB.CONFIG 中使用 InProc 会话状态来解决此问题。

查看此链接了解更多信息:http://www.codeproject.com/Questions/364203/Stop-Sharing-Session-State-between-Multiple-Tabs-o

【讨论】:

  • 哈哈。你没有阅读我的解决方案吗?我已经这样做了,我希望有更好的建议。
猜你喜欢
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 2011-02-19
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多