Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何限制用户在执行任务时在浏览器中打开多个选项卡?_C#_Javascript_Asp.net Mvc 3 - Fatal编程技术网

C# 如何限制用户在执行任务时在浏览器中打开多个选项卡?

C# 如何限制用户在执行任务时在浏览器中打开多个选项卡?,c#,javascript,asp.net-mvc-3,C#,Javascript,Asp.net Mvc 3,为了安全起见,我必须限制用户打开任何浏览器的多个选项卡,比如银行。 我希望用户仅在浏览器的单个选项卡中执行任务 如果他们试图打开多个选项卡,则必须强制注销其用户ID 我不知道怎么做 请帮助我,或者给我一些逻辑来做这件事 提前感谢。首先,我必须同意其他用户的意见——如果有人打开了多个选项卡是一个安全问题,那么你就有问题了。大问题 但是,如果您仍然想这样做: 用户登录时: // Must be a string var dateTimeStamp = "" +new Date().getTime()

为了安全起见,我必须限制用户打开任何浏览器的多个选项卡,比如银行。 我希望用户仅在浏览器的单个选项卡中执行任务

如果他们试图打开多个选项卡,则必须强制注销其用户ID

我不知道怎么做

请帮助我,或者给我一些逻辑来做这件事


提前感谢。

首先,我必须同意其他用户的意见——如果有人打开了多个选项卡是一个安全问题,那么你就有问题了。大问题

但是,如果您仍然想这样做:

用户登录时:

// Must be a string
var dateTimeStamp = "" +new Date().getTime();

// This one can be seen by all windows/tabs
localStorage.setItem("timeKey", dateTimeStamp);
// This one can only be seen by the current window/tab
sessionStorage.setItem("timeKey", dateTimeStamp);
现在,加载页面时,只需检查这两个值是否匹配:

var localKey = localStorage.getItem("timeKey");
var sessionKey = sessionStorage.getItem("timeKey");

// If there is a key:
if (localKey) {
  if (localKey !== sessionKey) {
    // Handle multiple login here? Redirect to login page?
    // Complain about tab?
  }
}
然后,当用户注销时,确保删除了这两个密钥

localStorage.removeItem("timeKey");
sessionStorage.removeItem("timeKey");
警告:

这种编码有点脆弱,毫无疑问,我错过了一个边缘案例

额外学分


如果有人在新选项卡上登录,可以监视对
本地存储的更改,并强制所有其他页面注销。

这有什么安全好处?