【问题标题】:How to catch users which open application from multiple page如何捕获从多个页面打开应用程序的用户
【发布时间】:2010-12-18 18:57:18
【问题描述】:

在我的网络应用程序中,一些用户在多个浏览器页面中打开应用程序。当用户这样做时,我怎样才能抓住他们?

编辑为什么我需要这样的东西:我有一个名为 DealerID 的变量,在带有会话的页面之间携带。一些用户希望:“当我在一个页面上使用 DealerID 进行工作时,在另一页面上使用另一个 DealerID 进行其他工作”

我试图解释。我希望,它会有所帮助。

【问题讨论】:

  • 不要将您的用户定为犯罪 - 打开多个窗口不是犯罪!
  • 抓住他们?做什么?我现在在两个标签中都打开了,我应该担心有人来找我吗? ://
  • 从眼前的问题退后一步:为什么当用户在两个窗口中打开您的应用程序时会出现问题?它会以某种方式破坏应用程序状态吗?
  • 一个用户在多个浏览器中打开 yoru 应用与多个用户在单个浏览器中打开它本质上是相同的。除非您想跟踪来自同一 IP 的多个会话(这远非可靠),否则您在这里没有运气
  • 我不知道为什么每个人都如此着迷。这种行为完全有可能存在特定的业务需求。

标签: c# asp.net session


【解决方案1】:

您真正需要关注的是修复您的应用程序以支持多个选项卡/页面。

我建议您将会话数据存储到应用程序的页面中,并在页面将其提交回服务器时对其进行重建。这样,每个页面都可以使用相同的会话变量来传递页面,而不会在系统中产生副作用。

会话数据确实应该是真正的全局数据,可以放心引用。如果您在假设只有一个页面会使用它的情况下创建“长期持久”数据,那么您将遇到一些麻烦。

【讨论】:

    【解决方案2】:

    在这个用例中使用会话是错误的。您应该让浏览器实例在每个请求期间告诉您 DealerID 是什么。您可以通过查询字符串、视图状态、页面上的下拉列表/字段等来完成此操作。

    基本原理:会话通过共享 cookie 绑定到浏览器的所有实例,这会导致此问题。查询字符串或视图状态,或页面上的字段将数据绑定到浏览器窗口的特定实例。通过使用这种方法,您可以完全消除问题并按照设计使用技术。

    【讨论】:

    • 我真的觉得我在这里服用了疯狂的药丸。如果 Session 导致您出现问题,请不要使用它。这是最简单的答案。
    【解决方案3】:

    从技术上讲,除非他们自己告诉你,否则你无法找出谁打开了超过一页(HTTP 是无连接的)!

    我认为这是一项执行工作(如何有效地完成工作),而不是最好的技术防篡改解决方案。所以:

    在页面上放一点AJAX 控件(JavaScript 代码),作为来自客户端的信号组件,并显示 Blah..Blah....

    使用Session 对象(ASP.NET 会为您处理正确的会话键/值,只需在服务器端使用它),如果有来自单个客户端的两个信号,您已经捕获(!)它们为你希望。高级用户可以禁用此防御机制,但您可以通过更复杂的实施来提高价格。

    我建议不要立即对作弊做出反应。在您的业务逻辑中标记用户并稍后显示账单。这更有效,即 StackOverFlow.com 所做的:)

    【讨论】:

    • Some users want that: "While I make my jobs with a DealerID in one page, make other jobs with another DealerID on another page" 所以公认的答案是不给用户他们想要的功能?
    【解决方案4】:

    我会将令牌绑定到您发送到浏览器的对象,并参考用户和他们请求的对象将它们存储在数据库中。

    我会随每个请求发送令牌并将其嵌入到页面上的隐藏字段中。然后使用 javascript 将令牌挂接到任何回发上。如果令牌多次返回,您就有了额外的标签!

    【讨论】:

      【解决方案5】:

      鉴于您想计算用户同时打开您的应用程序的选项卡数量,问题在于确实没有一个好的方法。最好的方法可能是在本地运行一些东西,但是由于不同的浏览器编码不同,没有一个好的方法可以让标题不知道用户正在使用哪个浏览器并进行 API 调用来查找出(如果有的话!)。

      如果您只需要一个基本的、粗略的估计计数可能是多少。您可以尝试在加载应用程序时设置一个 cookie(在新选项卡中加载它会导致 cookie 被重置),并为每个会话与 IP 地址交叉引用一个 GUID。但是,这永远不会很准确,因为多个用户可能在同一个 IP 地址上,他们可能使用多个浏览器,会话可能超时等等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        • 1970-01-01
        • 2020-05-16
        • 2014-12-23
        • 2020-09-27
        • 2012-02-16
        相关资源
        最近更新 更多