0

我已经使用主干定义了一组路由

例如:

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”时才能访问“所有”和“新闻”路由。我如何在这里进行检查?例如,如果用户尝试访问“所有”和“新闻”页面,我可以检查和比较并将用户重定向到单独的登录页面吗

4

1 回答 1

0

根据您存储当前用户状态的方式,无论是 aSessionController还是CurrentUser模型,您始终可以按照currentUser.isLoggedIn().

我不完全确定您的映射,因为 Backbone 只为路由公开一个单深度哈希图(您是否使用其他东西来定义您的路由?)

在我的一个 Backbone 应用程序中,我的代码如下:

home: function homeFn()
{
    if (this.app.currentUser.isAnonymous())
    {
        this.app.page('index');
    }
    else
    {
        this.app.page('dashboard');
    }
}

这使您可以直接控制路线映射。如果你不喜欢这样,你总是可以扩展 Backbone.Router 对象来拥有之前/之后的过滤器。在撰写本文时,这个插件是我以前使用过的插件,它帮助我很好地完成了你想要实现的目标。

于 2012-05-29T12:05:32.993 回答