2012-05-29 150 views
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" 

現在,我要限制訪問某些路線,即只能夠訪問「所有'和'新聞'路線,如果用戶'登錄'。我怎樣才能在這裏做支票?如果用戶試圖訪問「全部」和「新聞」頁面,例如

回答

0

,我是否可以檢查並比較並將用戶重定向到單獨的登錄頁面,具體取決於您如何存儲當前用戶的狀態,無論是一個SessionControllerCurrentUser模型,你總是可以暴露一個方法沿currentUser.isLoggedIn()線。

我並不完全相信你的映射,如骨幹只公開了路線單一深入的HashMap(你用別的東西都定義你的路線?)

在我的主幹應用程序之一,我有一些代碼是沿着以下線:

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

它可以讓你直接控制在路由映射。如果你不喜歡這樣,你總是可以擴展Backbone.Router對象以在過濾器之前/之後。在撰寫本文時,this plugin是我以前使用過的,並且很好地幫助我完成了你想要達到的目標。

+0

嗨,謝謝你的回覆。是的,我已經有一種方法來知道用戶是否已登錄,所以我可以檢查用戶的isLoggedIn。我不確定的是我如何區分「登錄」用戶和「非登錄」用戶的路線。例如,對於'新聞'路線,登錄用戶應該可以訪問無問題,但對於未登錄的用戶,我想將他重定向到單獨的登錄頁面。基本上,如果用戶未登錄,我打算對差異路由採取一些不同的操作,例如,新聞 - >去登錄頁面,流行 - 允許訪問等 – Zhen