2011-03-04 101 views
1

請考慮以下情形:管理員>管理器>代表>客戶>沒有作用(公共訪問頁)訪問級別/安全角色的設計選擇:個人角色或繼承

有了:有4個級別的訪問的Web應用程序我目前的應用程序的設置,我可以允許2種方式訪問​​:

  1. 我可以編寫代碼,將承擔角色的優先級,即如果用戶是AA經理 - 應用程序將自動假設他/她的權利客戶&代表可以訪問的區域,但不是管理員。

  2. 我可以在表中分別分配每個角色。例如,用戶將有3個角色分配給他們。因此,該應用程序不會承擔角色優先/繼承。我可以讓管理員爲用戶分配角色,或者讓一些代碼在授予更高訪問級別時自動爲用戶分配額外角色。

,此兩種方法是從維護的角度看比較好?

P.S.

我不認爲這很重要,但我使用Rails 3與CanCan &設計。 也是我設置了角色和用戶之間的關係如下:

角色< =>(HABTM)< =>用戶

回答

2

我有一個類似的角色要求,我選擇的方法1.這是自然的假設你去的角色層次越高,你擁有的訪問就越多。所以,說一個經理有權訪問一位代表的資源是可以的。

此外,由於您使用的是CanCan,因此可以很容易地設置跌落。從初始化塊頂部的訪問權限最小的角色開始,然後繼續工作。

+0

Srdjan,謝謝你的回覆。後續問題:如果角色名稱發生變化或我必須添加更多粒度角色支持,該怎麼辦?我的意思是 - 沒有單一的垂直繼承了。 I.E .:我想授予一些代表,新角色稱爲product_manager,並給予其他一些faq_manager,但另一個代表應該能夠使用news_manager。你會如何處理這種情況?在過去 - 我使用第二種方法,它確實沒問題。有什麼想法嗎? – konung 2011-03-04 21:51:37

+0

哦,如果你需要更多的粒度和角色不一定建立在彼此之上,我也會採用方法2.康康的美妙之處在於,如果你需要它,你也可以做。 – 2011-03-05 02:08:37