我的Jquery移动应用程序有一个简单的登录页面,用户将通过该页面登录并能够访问其余页面。但问题是我仍然可以在不登录的情况下访问其余页面。使用cookie在客户端维护登录会话,因为在服务器端没有维护会话。我有一个HTML文件,其中我有所有必需的jquery移动页面。有什么办法可以限制直接访问我的申请的内部页面。
<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>
答案 0 :(得分: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);
}
});
答案 1 :(得分: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
寻找覆盖的起点可以在
区域附近$。事件
可能你甚至不需要覆盖一个事件,也许现有的一个会做你想做的事情。您可以使用firebug检查事件处理程序变量,以查看是否存在参数选项以阻止导航到下一页。