如何仅允许访问特定路由

时间:2012-05-29 06:28:10

标签: login backbone.js routes restriction

我已经使用骨干

定义了一组路线

例如:

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'时才能访问'所有'和'新闻'路线。我怎么在这里办理入住手续?如果用户尝试访问“所有”和“新闻”页面,我可以检查和比较并将用户重定向到单独的登录页面

1 个答案:

答案 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是我之前使用过的,并帮助我完成了您正在努力实现的目标。