Jquery Mobile 1.4.0客户端会话处理

时间:2014-02-17 14:34:42

标签: jquery jquery-mobile

我正在使用jquery mobile 1.4实现一个简单的移动网络应用程序(我在单个html文件中使用单页模型 - page1和page2)

以下是我到目前为止所尝试的代码。请帮我解决这个问题。

问题,

  1. 如何限制第2页的直接访问。 http://localhost:8080/myApp/#Page2

  2. 这是从客户端处理会话的正确设计吗?

  3. 直接在浏览器窗口中点击网址http://localhost:8080/myApp/#Page2。我看到page2正在出现然后消失,最后出现了page1。如果sessionStorage中没有SessionID,我想直接显示page1对象

  4. 我做错了什么?请指正。

    my.js文件

    $(document).on('pagebeforecreate','#page2', function(event) {
        var SessionID = sessionStorage.getItem("SessionID");
        if(SessionID) {
            $.mobile.pageContainer.pagecontainer('change', "#page2");
        }else {
            $.mobile.pageContainer.pagecontainer('change', "#page1");
        }
    
    });
    $(document).on("pageinit","#page1",function() {
    $.ajax({
                url : "/myApp/rest/fetchJson",
                type : "POST",
                dataType : "json",
                data : formData,
                contentType : "application/json",
                cache : false,
                success : function(data) {
                        sessionStorage.setItem("SessionID", data.SessionID);
                        $.mobile.pageContainer.pagecontainer('change', "#page2", {
                        transition: 'none'
                    }); 
                }
            }); //Ajax ends
    }); //page init ends
    

    谢谢,

    阿苏

1 个答案:

答案 0 :(得分:0)

尝试创建一个方法javascript来验证会话是否存在ajax请求:

var sessionExist: function () {

        return $.ajax({
            url: 'checksession_file_onserver',
            data : params,
            type: 'get',
            dataType: 'json'
        })
 }

在文件服务器上:

if(session_exist){
   return true;
}else {
  return false;
}

页面限制直接访问:

var sessionStatus = sessionExist();
if(sessionStatus === false) {
  redirect to page ->> example location.hash = 'your page'     
}