这更像是对模式和讨论的要求,而不是一个简单的一次性问题。我有一个骨干应用程序,用户可以在其中担任不同角色。路线像往常一样定义:
routes:
"": "showHomePage"
"import": "showImportPage"
我希望该import
页面只能由某些用户角色访问。我想我可以做这样的事情:
showImportPage: ->
if not MyApp.CurrentUser.can_import
return
这确实有效。当然,正如您可以想象的那样,这很容易通过使用 Chrome 控制台来利用,即使我没有在任何地方显示链接,也很容易进入地址栏并输入它。
尽管上述内容足以阻止普通用户,但我的问题是:如何确保该路由不被访问?
到目前为止我的观点是,唯一的方法是在提供该路由之前引用服务器,或者通过检查特殊的 URL,或者在访问之前简单地重新获取用户模型......不过,我有这个问题,这基本上会破坏“单页应用程序”背后的整个想法的目的,如果每个 url 都必须由服务器进行身份验证,并且我需要在允许用户导航之前显示通常的 ajax 微调器......我知道来回的数据量很少(只有json用户信息甚至更少),但仍然......
如果您不得不面对这个问题,您有什么意见或解决方案?