Javascript 如何仅从我的登录页面禁用mvc中的浏览器后退按钮?

Javascript 如何仅从我的登录页面禁用mvc中的浏览器后退按钮?,javascript,jquery,asp.net,asp.net-mvc,asp.net-mvc-4,Javascript,Jquery,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我试着把它放在我的login.cshtml中,但根本不起作用。然后我试着把它放在我的_Layout.cshtml中,但它在影响整个网站的同时起到了作用(正如预期的那样)关于我应该放在哪里或如何操作代码的任何提示? 在这里: function preventBack() { window.history.forward(); } setTimeout("preventBack()", 0); 您可以将其放置在布局中,但只有在登录页面上出现以下情况时,才能将其激活: if(window.

我试着把它放在我的login.cshtml中,但根本不起作用。然后我试着把它放在我的_Layout.cshtml中,但它在影响整个网站的同时起到了作用(正如预期的那样)关于我应该放在哪里或如何操作代码的任何提示?

在这里:

function preventBack() { window.history.forward(); }
    setTimeout("preventBack()", 0);

您可以将其放置在布局中,但只有在登录页面上出现以下情况时,才能将其激活:

 if(window.location.href.toLowerCase().indexOf("login") > -1)
 {
     function preventBack() { window.history.forward(); }
     setTimeout("preventBack()", 0);
 }

我最近在一个MVC项目中使用了它。也许你可以把它放在登录重定向到的页面上

//kill all back button functionality
function noBack() { window.history.forward() }
noBack();
window.onload = noBack;
window.onpageshow = function(evt) { if (evt.persisted) noBack() }
window.onunload = function() { void (0) }

但是,如果出于安全原因使用它,一定要小心,因为Javascript不是处理站点内安全逻辑的最理想解决方案。由于Javascript代码在客户端PC上执行,并且/或者可以通过浏览器禁用,因此很容易绕过。从用户体验的角度来看,禁用后退/前进是很可怕的。如果有人不想登录并意外登陆登录页面怎么办?@MarcB那么你有什么建议?我在mvc中遇到了这个问题,当我注销(并清除会话)时,你可以在浏览器中单击“上一步”查看敏感信息。这是浏览器缓存问题。。。如果是敏感的,则输出不带缓存头的页面。@Vrankela这是一个示例。您的目标是防止某人看到敏感数据,但您希望通过禁用“后退”按钮来实现这一点。从一开始你就应该问“如何防止人们在注销后访问敏感的缓存信息?”@mason我将听取你的建议,我应该发布新问题还是编辑现有问题?没有成功:(顺便问一下,>-1的作用是什么?indexOf中的名称是.cshtml,对吗?indexOf在url中查找字符串的一部分。它返回ole字符串中搜索字符串的索引。因此,如果它是“”,那么0表示您创建了字符串。您登录的url是什么?将正确的字符串放入搜索。我编辑了我的答案,为avo添加了小写字母。)id区分大小写。因此,如果有人禁用JavaScript,他们可以绕过此“安全性”衡量标准?如果有人禁用了JavaScript,他就不能在web上浏览。Jquery在这些网站上随处可见days@MathieuLabrieParent您可以在不使用JavaScript的情况下浏览web。它破坏了许多功能,但对于任何试图获取敏感数据的人来说,这并不是一个真正的问题。因为这个问题的目的是保护敏感数据,所以d你的答案真的不安全,我必须投否决票。另外,jQuery不是JavaScript的同义词。这是为了防止我返回页面加载(登录重定向到的页面),因此如果有人禁用JavaScript,他们可以绕过这个“安全性”度量?但我在注销后仍然可以返回第三个页面。那么,你建议我怎么做,而不是在javascript中执行此操作?@khar1027如何限制此操作,使其仅在登录页面上工作?@khar1027如何将此代码放入我的_布局(我的主布局)中查看并放置一个if函数,以检查后退按钮请求是否仅来自登录页面?