2014-10-05 6 views
2

Я пытаюсь создать мобильное приложение jquery с несколькими страницами, которые мягко защищены защитой паролем. Я предполагаю, что могу поместить что-то в одно из событий страницы, чтобы перенаправить, но я не могу заставить его работать чисто. Я могу получить перенаправление, но сначала он начинает мигать страницу, которую я пытаюсь защитить.защита страницы в jQuery mobile

Вот наиболее перспективным, что я пробовал:

$(document).on("pagebeforeshow", "#ProtectedPage", function (event) { 

     if (!hasUserLoggedIn()) { 
       alert("You must be logged in to visit this page"); 
       event.preventDefault()  

       $("body").pagecontainer("change", "#loginpage"); 
     } 

}); 

спасибо за любую помощь, которую вы можете предоставить

ответ

0

Хитрость заключается в том, чтобы сделать настоящий редирект на страницу входа на pagebeforechange вместо:

$(document).on("pagebeforechange", function (event, data) { 

     if (!hasUserLoggedIn()) { 
       alert("You must be logged in to visit this page"); 
       data.toPage = "#loginpage"; 
       $.extend(data.options, {changeHash: false}); 
     } 

}); 

Примечание: JQuery Мобильный> = 1.4.3 имеет устаревшее событие на таком же

$(document).on("pagecontainerbeforechange", function (event, data) { 

    if (!hasUserLoggedIn()) { 
      alert("You must be logged in to visit this page"); 
      data.toPage = "#loginpage"; 
      $.extend(data.options, {changeHash: false}); 
    } 

}) 

;

http://jqmtricks.wordpress.com/2014/07/13/pagecontainerbeforechange/

+0

Это хорошее начало, но у него есть две проблемы, с моей точки зрения. Во-первых, он использует устаревший метод, которого я бы хотел избежать. Я могу справиться с этим, но он также защищает каждую страницу, пока я только хочу защитить пару из них. Есть ли способ защитить подмножество страниц? Я прочитал документы об этом событии, и я не видел data.fromPage – user3706813

+0

Добавлено событие замены для jQuery 1.4.3 + .... (на самом деле, пример был из этого нового события). Это событие запускается до перехода на потенциально небезопасную страницу, поэтому правильный подход к документированию этого события является правильным. Защищает каждую незаконную навигацию внутри приложения. –

+1

Да, это работает. Для того, чтобы он соответствовал моим потребностям (только для обеспечения подмножества страниц), мне пришлось изучить и разбить data.absUrl, как в ссылочной статье. Большое вам спасибо за ответ. – user3706813

Смежные вопросы