Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干网在基于权限的应用程序中限制来自用户的路由_Backbone.js_Permissions_Authorization - Fatal编程技术网

Backbone.js 主干网在基于权限的应用程序中限制来自用户的路由

Backbone.js 主干网在基于权限的应用程序中限制来自用户的路由,backbone.js,permissions,authorization,Backbone.js,Permissions,Authorization,这更多的是一个模式和讨论的要求,而不是一个简单的一次性问题。我有一个主干应用程序,用户可以成为不同角色的一部分。路线的定义与往常一样: routes: "": "showHomePage" "import": "showImportPage" 我希望导入页面仅可供某些用户角色访问。我想我可以这样做: showImportPage: -> if not MyApp.CurrentUser.can_import return 这确实有效。当然,正如您所想象的,这很容易通

这更多的是一个模式和讨论的要求,而不是一个简单的一次性问题。我有一个主干应用程序,用户可以成为不同角色的一部分。路线的定义与往常一样:

routes:
  "": "showHomePage"
  "import": "showImportPage"
我希望
导入
页面仅可供某些用户角色访问。我想我可以这样做:

showImportPage: ->
  if not MyApp.CurrentUser.can_import
    return
这确实有效。当然,正如您所想象的,这很容易通过使用Chrome控制台来利用,即使我没有在任何地方显示链接,也很容易进入地址栏并键入它

尽管上述内容足以阻止普通用户,但我的问题是:如何确保该路由不被访问

到目前为止,我的观点是,唯一的方法是在提供该路由之前返回服务器,或者通过检查一个特殊的URL,或者在访问之前简单地重新获取用户模型。。。不过,我有一个问题,那就是如果每个url都必须经过服务器的身份验证,并且我需要在允许用户导航之前显示通常的ajax微调器,那么这将基本上违背“单页应用程序”背后的整个想法的目的。。。我知道来回的数据量很小(只有json用户信息或更少),但仍然


如果你不得不面对这个问题,你的观点或解决方案是什么?

我认为你的问题很好

我使用BackboneJS和Jquery mobile制作了一个PhoneGap应用程序,因此我遇到了与您现在面临的问题相同的问题

我认为授权不能只存在于客户端,因为它本质上是错误的。生活在客户机上的东西完全由客户机控制,这是任何人都无法改变的

向服务器发送请求不会打破单一应用程序页面模式,只要请求获得所需的最少数据,并且所有逻辑/视图组件都位于客户端上

请记住,如果该页面中存在不希望普通用户看到的敏感数据,则还必须在验证请求授权后从服务器发送,因此必须发送的不仅仅是用户信息的JSON,还有数据本身


我希望其他人能证明我错了,但就我而言,这就是交易。

我同意。我现在使用的一个解决方案是重新获取用户并最终重定向到主页,但即使这个解决方案也有缺陷,只需插入一个断点并更改结果即可解决。。。我开始认为,唯一的解决方案是在呈现页面时从服务器获取(最小)数据,在这种情况下,要么返回有限的数据集,要么返回403错误。。。