【问题标题】:How can I restrict the part of a website so that it can be viewed by only one computer at a time? [closed]如何限制网站的一部分,使其一次只能由一台计算机查看? [关闭]
【发布时间】:2010-06-20 19:47:34
【问题描述】:

使用 C# Visual Studio 2008 和 SQL Server 2005。

  • 一个数据库服务器。

  • 一个网络服务器

  • 三个客户端

  • 网页名称为alpha。网站名称是mysite

我希望一次只有一个客户可以查看页面alpha。如果一个人正在查看该页面,而另一台计算机上的另一个人尝试查看同一页面,则访问将被拒绝。

有没有办法配置 IIS 以限制连接到特定页面的计算机?

是否可以通过使用静态类来实现这一点,以便只生成此类的一个实例,而当另一个实例尝试生成 ERROR 时?

如何做到这一点?

请注意,有很多页面。我只想限制人们在此页面上的查看。

【问题讨论】:

  • 这将非常困难并且容易出错。为什么需要这样做?

标签: c# sql-server-2005 visual-studio-2008 iis-5


【解决方案1】:

由于您无法将页面刷新与打开另一个选项卡的同一浏览器区分开来,因此我看不出有任何方法可以使这种方案起作用。

为什么需要这个?也许还有其他更好的选择?

【讨论】:

    【解决方案2】:

    您描述的方式没有内置限制,我不确定静态类应该提供什么帮助。

    我会使用application variable,存储第一个客户端的 IP 地址和某种超时,然后在您要以这种方式保护的页面上设置/检查它。

    【讨论】:

    • 这个想法有几个有趣的问题(虽然它几乎是唯一的选择。)假设您只计算 IP 地址,那么代理服务器/NAT 可以让您绕过这个块。如果您依赖某些 cookie/会话令牌和超时,如果您在不结束会话的情况下关闭浏览窗口(直到超时到期),您可以自己拒绝服务这些并不是这个答案的否定,而是警告请求的解决方案。
    【解决方案3】:

    简短的回答是:我认为你做不到。

    不那么简短的答案是:您可以通过检查Request.UserHostAddress 来检查请求来自哪个计算机/IP 地址,临时将此 IP 地址存储在“某处”并防止再次将页面显示到相同的 IP 地址。但是这种方法存在一些问题:

    • 有时您必须清除“活动”客户端 IP 地址列表
    • 如果不同的用户/计算机位于防火墙/代理/等后面,您将无法区分它们(它们都会向您的 Web 应用程序显示相同的 IP 地址)

    【讨论】:

      【解决方案4】:

      我想理论上是可能的。

      您可以使用身份验证 + cookie + javascript 来做到这一点。

      使用身份验证让用户登录并维护每个用户已提供的页面的状态。在该浏览器中设置一个 cookie,以允许不必再次登录。

      现在您可以在 javascript 中使用 onUnLoad 事件(或其他任何事件或 AJAX 作为保持活动状态 + 超时擦除 DOM 等)来清除(或维护)该用户的特定页面的状态。

      每当用户请求页面时,检查他是否已登录并打开该页面。如果状态显示他已打开,您可以拒绝并发视图。如果他使用其他浏览器,您可以要求重新登录,因为缺少 cookie 等。

      当然,其他限制可能会阻止您使用它。

      免责声明:我自己没有尝试过,可能有办法解决这个问题。

      【讨论】:

      • 虽然这种方法可能在单个浏览器中工作,但它不会限制不同浏览器中的并发访问,因为每个浏览器都有自己的 cookie 存储,并且因为它们位于不同的浏览器中进程,它们有完全独立的 javascript 环境,不能相互交互。
      • @Dave:如果用户使用不同的浏览器,您需要让用户重新登录。您已经知道他使用不同的浏览器/计算机登录。我不明白为什么那行不通。这里没有关于不同 javascript 环境交互的假设。事实上,这种方法甚至可以在不同的计算机上工作!状态数据在服务器,而不是客户端。
      【解决方案5】:

      一种低效的方法可能是将每个用户的 ip 和当前页面放入数据库,然后针对该 ip 的所有后续请求进行查询。为每个页面添加一个 onUnload 事件,从数据库中删除已卸载的页面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-30
        • 2011-06-18
        • 1970-01-01
        • 2015-10-27
        • 2012-12-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多