如何防止jQueryMobile中内部链接页面的默认行为?

时间:2011-06-28 11:53:48

标签: jquery-mobile linked-list piracy-prevention

如何阻止内部链接网页上的默认行为?

我的目标是在没有首先进行身份验证的情况下阻止用户访问页面内容。

3 个答案:

答案 0 :(得分:1)

最近我遇到了同样的情况。我正在使用jQuery Mobile和jQuery Templates,所有敏感数据都来自Web服务。

我的解决方案是为用户需要授权的任何页面注册一个带有pagebeforeshow事件的回调。在这个回调函数中,我检查了用户是否被授权,在我的情况下,这是一个JSONP Web服务调用,它返回数据或相应的错误代码。

然后,如果用户被授权,则使用jQuery模板呈现数据;否则,我使用$.mobile.changePage()将用户重定向到登录页面。

答案 1 :(得分:0)

在beta3中,您可以使用此处所述的“动态注入页面”技术:

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

答案 2 :(得分:-1)

用户身份验证是服务器端的事情,无法在javascript中实现!

是什么阻止我自己发送GET请求?

如果用户未经过身份验证,则无法登录时无法访问的页面应重定向到登录页面。如果直接从javascript使用Web服务,那么如果用户未经过身份验证,则应返回错误。

在javascript中阻止对网页的访问是荒谬的。 [但我不得不承认我之前在商业产品中看过它......]

修改

好的,回答这个问题......

这取决于行为如何附加到页面。如果您对livepageshow使用pagecreate表示这些行为,那么您可以使用pagebefore*事件和return false

其他编辑

我似乎更了解这个问题。你有web服务,我会认为它们是安全的,你不想提出请求并得到'错误 - 没有认可'的反应 - 没有必要这样做。并且您在一个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。