1

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

我的目标是防止用户在未经身份验证的情况下访问页面内容。

4

3 回答 3

1

最近我也面临同样的情况。我使用 jQuery Mobile 和jQuery Templates,所有敏感数据都来自 Web 服务。

pagebeforeshow我的解决方案是为用户需要授权的任何页面注册事件回调。在这个回调函数中,我检查了用户是否被授权,在我的例子中,这是一个 JSONP Web 服务调用,它要么返回数据,要么返回一个适当的错误代码。

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

于 2011-06-28T13:42:02.480 回答
0

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

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

于 2011-09-20T07:12:06.697 回答
-1

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

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

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

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

编辑

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

这取决于行为如何附加到页面。如果您使用livewithpageshowpagecreatefor 这些行为 - 那么您可以使用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 的条件。

于 2011-06-28T14:01:57.773 回答