2012-01-10 72 views
1

我的Jquery移动应用程序有一个简单的登录页面,用户将通过它登录并且能够访问其余的页面。但是这里的问题是,我仍然能够在不登录的情况下访问其余页面。因为在服务器端没有维护会话,因此登录会话在客户端使用cookie进行维护。我有一个HTML文件,其中包含所有必需的jquery移动页面。是否有任何方法可以限制直接访问我的应用程序的内部页面。我们可以避免在jquery mobile中直接访问页面吗?

<body onload="init()"> 
    <div> 
    <!-- login page --> 

    <div data-role="page" id="home" data-theme="wl" style="top: 1px;"> 
     .............. 
    </div><!-- End of login page --> 
    <!-- forgot page --> 

    <div data-role="page" id="forgot" data-theme="wl"> 
     ................. 
    </div><!-- End of forgot password page --> 
    <!-- Search page --> 

    <div data-role="page" id="search" data-theme="wl"> 
     ................ 
    </div><!-- End of search result page --> 
    <!-- Sendmail page --> 

    <div data-role="page" id="sendmail" data-theme="wl"></div> 
    <!-- End of Sendmail page --> 
    <!--- View Profile Page =--> 

    <div data-role="page" id="viewProfile" data-theme="wl"> 
     ........................ 
    </div><!-- End of View Profile Page --> 
    </div> 
</body> 

回答

1

我发现了另一个简单的解决方案。以前当我有这个问题时,我会在点击按钮的onClick事件期间检查cookie会话。但现在我已通过在下面描述的pageshow事件期间检查cookie会话来更改它。

$('mypage').live('pageshow', function (event, ui) { 
    if(checkCookie()){ 
     //do some task  
    } else { 
     alert('Your Session has Expired or User not Logged In'); 
     $.mobile.changePage("#login", "slide", true, true); 
    } 
}); 
0

您可以原型(重写)页面显示事件方法。

这这里的代码是你如何处理该事件:

<script type="text/javascript" language="javascript"> 
    $('mypage').live('pageshow', function (event, ui) { 
     alert('This page was just hidden: ' + ui.prevPage); 
    }); 
</script> 

更多活动可以在这里找到:http://jquerymobile.com/test/docs/api/events.html

这是JavaScript的原型设计教程:

http://www.javascriptkit.com/javatutors/oopjs2.shtml

寻找替代物的起始地点可能在

$ .Event

也许你甚至不会需要重写的事件,也许是一个现有的会做你想要什么。您可以使用萤火虫检查事件处理程序变量,以查看是否存在阻止导航到下一页的参数选项。

相关问题