如何限制网站的某个部分,以便一次只能查看一台计算机?

时间:2010-06-20 19:47:34

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

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

  • 一个数据库服务器。

  • 一个网络服务器

  • 三个客户

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

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

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

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

如何实现这一目标?

请注意,页面很多。我只想限制人们对此页面的看法。

5 个答案:

答案 0 :(得分:4)

由于您无法区分刷新页面与打开另一个选项卡的同一浏览器,我认为没有办法让这样的方案有效。

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

简短的回答是:我认为你不能这样做。

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

  • 您必须在某个时间清除“有效”客户端IP地址列表
  • 如果他们位于防火墙/代理/等之后,您将无法区分不同的用户/计算机(它们将显示与您的网络应用程序相同的IP地址)

答案 3 :(得分:1)

我认为理论上这是可能的。

您可以使用身份验证+ Cookie + javascript进行此操作。

使用身份验证可以让用户登录并维护每个用户所服务的页面状态。在该浏览器中设置cookie,以便不必再次登录。

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

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

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

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

答案 4 :(得分:0)

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