Как предотвратить поведение по умолчанию на внутренних связанных страницах в jQueryMobile? - PullRequest
1 голос
/ 28 июня 2011

Как я могу предотвратить поведение по умолчанию на внутренних связанных страницах?

Моя цель - запретить пользователю доступ к содержимому страницы без предварительной аутентификации.

Ответы [ 3 ]

1 голос
/ 28 июня 2011

Недавно я столкнулся с такой же ситуацией.Я использовал jQuery Mobile вместе с jQuery Templates , все конфиденциальные данные поступали из веб-службы.

Моим решением было зарегистрировать обратный вызов с событием pagebeforeshow для любой страницы, которую пользовательТребуется авторизация для.В рамках этой функции обратного вызова я проверил, авторизован ли пользователь, в моем случае это вызов веб-службы JSONP, который либо возвращает данные, либо соответствующий код ошибки.

Затем, если пользователь авторизован,данные отображаются с помощью шаблонов jQuery;в противном случае я перенаправляю пользователя на страницу входа, используя $.mobile.changePage().

0 голосов
/ 20 сентября 2011

В бета3 вы можете использовать технику «Динамическое внедрение страниц», как описано здесь:

http://jquerymobile.com/test/docs/pages/page-dynamic.html

0 голосов
/ 28 июня 2011

Аутентификация пользователя на стороне сервера и не может быть реализована в javascript!

Что мешает мне отправлять запрос GET самостоятельно?

Страницы, которые не доступны без входа в системуследует перенаправить на страницу входа, если пользователь не аутентифицирован.Если вы используете веб-сервисы напрямую из javascript, то они должны возвращать ошибки, если пользователь не аутентифицирован.

Блокировка доступа к страницам в JavaScript нелепа.[Но я должен признать, что я видел это раньше в коммерческих продуктах ...]

edit

Хорошо, чтобы ответить на вопрос ...

Это зависит от того, как поведение привязано к странице.Если вы используете live с pageshow или pagecreate для такого поведения - тогда вы можете использовать pagebefore* событие и return false

другое редактирование

Я, кажется, лучше понимаю проблему.У вас есть веб-сервисы, и я предположу, что они безопасны, и вы не хотите делать запросы и получать ответ «ошибка - не проверено» - в этом нет необходимости.И вы используете несколько страниц в одном HTML-документе.

С этими допущениями я говорю, что вам нужно написать небольшую оболочку над $.mobile.changePage() - что-то вроде этого:

$.mobile.changePageIf(condition,what,how,bool1,bool2){
if(condition){
  $.mobile.changePage(what,how,bool1,bool2);
  }else{
  //display "log in, dude!" or whatever
  }
}

И использоватьОбертка вместо оригинальной функции везде, помещая условие, которое возвращает true, если вы знаете, что пользователь вошел в систему.

...