我已经使用骨干
定义了一组路线例如:
Backbone.Routes.prefix = Onethingaday.Routers
Backbone.Routes.map
"!*splat":
"HomeRouter" : "reroute"
"":
"NavbarRouter" : "index"
"SidebarRouter" : "index"
"HomeRouter" : "index"
"all":
"NavbarRouter" : "index"
"SidebarRouter" : "index"
"HomeRouter" : "all"
"news":
"NavbarRouter" : "index"
"SidebarRouter" : "index"
"NotificationsRouter" : "index"
"popular/threads":
"NavbarRouter" : "index"
"SidebarRouter" : "index"
"DiscoverRouter" : "popularThreads"
现在,我想限制对某些路线的访问,即只有当用户'isLoginedIn'时才能访问'所有'和'新闻'路线。我怎么在这里办理入住手续?如果用户尝试访问“所有”和“新闻”页面,我可以检查和比较并将用户重定向到单独的登录页面
答案 0 :(得分:0)
取决于您存储当前用户状态的方式,无论是SessionController
还是CurrentUser
模型,您始终可以按currentUser.isLoggedIn()
的方式公开方法。
我不完全确定你的映射,因为Backbone只为路由暴露了一个单深度的hashmap(你使用别的东西来定义你的路由吗?)
在我的一个Backbone应用程序中,我的代码大致如下:
home: function homeFn()
{
if (this.app.currentUser.isAnonymous())
{
this.app.page('index');
}
else
{
this.app.page('dashboard');
}
}
可让您在路线映射中直接控制。如果您不喜欢这样,您可以始终将Backbone.Router对象扩展为具有前/后过滤器。在撰写本文时,this plugin是我之前使用过的,并帮助我完成了您正在努力实现的目标。