如何处理未经授权用户的浏览器反向导航

时间:2013-01-28 14:02:01

标签: javascript jquery css jquery-mobile

我有一个jQuery Mobile网站

  • 它有登录页面,个人资料页面,编辑个人资料页面。
  • 用户可以登录并访问其他页面。
  • 我正在使用cookie来维护一个会话,该会话保持30分钟的登录状态。当用户在登录以外的任何其他页面时,用户可以通过点击退出按钮退出。注销时,cookie被删除,用户被重定向到登录页面。
  • 当用户退出并点击后退按钮时,用户将导航到未经授权的上一页,因为用户已经 退出。

我们是否有办法阻止用户导航到未经授权的后页?

3 个答案:

答案 0 :(得分:2)

您应该在每个页面的顶部都有服务器端代码来检查用户是否已登录,如果不是,则重定向。如果后退按钮在注销后仍然有效,则表示浏览器正在显示页面的缓存版本(可能用户无法从那里进一步导航)。

答案 1 :(得分:0)

试试这个简单的脚本:

http://viralpatel.net/blogs/disable-back-button-browser-javascript/

当你试图返回时它会重新加载当前页面。

答案 2 :(得分:0)

感谢大家的贡献。我找到了另一种有助于处理未经授权页面导航的方法。我想与大家分享。使用setInterval函数我能够每秒都知道会话可用性。以下是我的评论代码。

var userDetails = getUser( );//get the user details from cookie
if(userDetails != null) // if user session exhists
{
if(userDetails.remember == 0){
var IDLE_TIMEOUT = 30 * 60; // set 30 minutes inactive timeout 
var _idleSecondsCounter = 0; // counter to count seconds starts from 0

//extend the session timeout by extending the cookie expiry by 30 minutes if the user is active and set the counter to zero
document.onclick = function() {
        updateCookie();
    _idleSecondsCounter = 0;
};
document.onmousemove = function() {
    updateCookie();
    _idleSecondsCounter = 0;
};
document.onkeypress = function() {
    updateCookie();
    _idleSecondsCounter = 0;
};

//function to check the idle time and 
function CheckIdleTime() {
    _idleSecondsCounter++;
    var curPage = $('.ui-page-active').attr('id');

    if (_idleSecondsCounter >= IDLE_TIMEOUT && curPage != "login")
    {
            delcookie(); //once session timeout occurs delete the cookie
            alert("Session Timeout");
            $.mobile.changePage( "#login", { transition: "slideup", changeHash: true });
    }
}
window.setInterval(CheckIdleTime, 1000);//check idle time every second
}
}else// if user session does not exhists
{
    $.mobile.changePage( "#login", { transition: "slideup", changeHash: true });
}