2013-03-22 29 views
1

我正在開發一個基於CRUD的數據庫,它需要有一些基於用戶的ACL(訪問控制列表)。我們希望這樣做,以便有一個管理員訪問面板,所以我們可以根據需要快速刪除內容或以其他方式緩和內容。我試圖保持它的靈活性,以便它可以是一個單獨的界面以方便使用,但也不會偏離一般用戶界面,否則將難以維護。Backbone.js:Admin Interface

假設後端將處理ACL,什麼是在前端處理創建用戶界面的好方法?是否有必要創建一個單獨的BB.js接口來提供服務,或者是否可以將一些額外的代碼傳遞給所有將被忽略的用戶?

建議或警告,將不勝感激!

回答

0

我解釋了你的問題,因爲你想爲不同的訪問級別的用戶提供不同的接口。因此,我想:

  1. 把一張支票的用戶訪問他們打的每個路由,以確保它們不會訪問網頁之前,他們不應該看到

  2. 他們仍然可以嘗試繞過這個(因爲他們可以更改他們的用戶模型),您的後端仍然會捕獲任何未經授權的請求。

  3. 您還可以根據用戶訪問級別有條件地顯示和隱藏頁面元素。

繼承人我ACL.coffee的示例代碼

acl = {} 

acl['admin'] = [ 
    'page1', 
    'page2', 
    'page3', 
    'page4', 
    'page5' 
] 

acl['user'] = [ 
    'page1', 
    'page2', 
    'page3' 
] 

hasAccess = (route) -> 
    # Get User Model 
    user = window.App.user 
    # Get Associated ACL 
    permissions = acl[user.get('role')] 
    # Check each URL for Access Privileges 
    # Returns false if route not in array 
    permissions.some (r) -> ~route.indexOf r 

{hasAccess}