2015-11-27 79 views
0

我想在asp.net(web表单)中实现登录和注销。在我的网络表单中,我有两个页面,分别是Default和Main。从默认页面,当我用用户名和密码登录时,它会重定向到主页面。当我按回按钮时,它直接重定向到默认页面。对于这一点,我复制javascript代码到我的默认页面在asp.net web表单中维护登录和注销会话

<script type = "text/javascript" > 
    function preventBack() { window.history.forward(); } 
    setTimeout("preventBack()", 0); 
    window.onunload = function() { null }; 

从计算器源question

登录后,当我点击后退按钮在我的浏览器(Chrome)首先它显示的默认页面,然后显示主页面。即当我点击后退按钮时页面会闪烁。

它显示主页与问题成功。 我应该执行停止显示默认页面,当我点击后退按钮

更新:

<script type = "text/javascript" > 
    history.pushState(null, null, 'Default.aspx'); 
    window.addEventListener('popstate', function (event) { 
     history.pushState(null, null, 'Default.aspx'); 
    }); 
</script> 

我放在默认页面的代码

+0

所以基本上,你想要用户停留在同一主页上,他从默认页面登录后,对不对? –

+0

是的,但如何做到这一点 – ifaminsi

回答

2

还有一个重要的事情,你应该知道这里。

一个不能禁用浏览器后退按钮功能只有可以做的事是阻止它。

不管怎么样,你不能按钮。但是,你可以做的是放置一些逻辑,并防止按钮做它的意图。

现在对于你已经显示的脚本来说,它应该可以正常工作,而在这里尝试的另一件事是在默认页面和主页面之间放置一个中介页。所以当你登录的时候,控件会流到中介页面,然后它会重定向到主页面。现在,当用户按下主页面上的返回按钮时,控件将流入中介页面,该页面将再次将用户重定向到其主页面。

效果将与您的脚本相同,但放置页面可以帮助您编写会话处理代码和一些服务器端检查(如果需要)。

但有一点可以肯定,浏览器后退按钮将保持原样。

希望这会有所帮助。

+0

是否有任何其他的可能性停留在同一页中,无需添加中介页...? – ifaminsi

+0

没有。因为作为开发人员,您无法处理浏览器回退事件。所以人们倾向于使用这种技术来解决这个问题。现在为你的最后一次尝试,你可以参考这个链接,并尝试这个人发布的解决方案。 http://stackoverflow.com/questions/19926641/how-to-disable-back-button-in-browser-using-javascript –

+0

当我按下返回按钮,它应该留在同一页面,但当我按照上述链接它重定向到带有HTTP 404错误的页面 – ifaminsi

0

正如马特所说,你不能不同意背部的行为。但是,您可以检查用户是否已登录并轻松将其重定向到主页面。

您只需要在默认页面上检查用户是否已登录,如果他们然后将其重定向到主页面,这种方式即使用户单击回来,他们也会被带回到主页。此外,可以在注销后进入默认页面。

+0

这将不可能作为默认页面开箱即用可能会被缓存并加载。 – LGSon

+0

我的主要问题是在从默认页面登录后,当用户点击返回按钮时,它不应该重定向到默认页面(即,在页面中登录)。我不是想禁用后退按钮只是我想留在主页 – ifaminsi

0

另一种方法可能是使用location.replace("...."),它取代了现有的文档,用户不能使用后退按钮返回,因为页面不存在于URL历史记录中。

源:https://developer.mozilla.org/en-US/docs/Web/API/Location/replace

+0

如何在网络表单中使用此代码 – ifaminsi

+0

本文的答案将指向你一个好方向:http://stackoverflow.com/questions/6990729 /简单的Ajax外形使用JavaScript的-NO-jquery的 – LGSon