2

動態授權用戶角色的最佳方式是什麼?事實上,我有一定的作用,改變加時賽,目前我有這樣的代碼我的一些actionscontorllers的:更改很多以配置新權限

 [Authorize(Roles = "Admin,MainFedration,FederationUser")] 
     public string ConfirmAccident(int? id) 
     { .... } 

那麼,如果一個角色中添加或改變它的允許,我應該尋找和改變大多數的動作和角色配置新的許可。

刪除這些冗餘工作的最佳方法是什麼?

回答

0

通過編寫自定義授權屬性,您可以將您的需求歸檔。請檢查這篇文章codeproject

2

唯一的另一種方法是配置每個角色在數據庫中的權限,然後子類AuthorizeAttribute,並重載邏輯以確定如何通過利用數據庫存儲的權限來確定允許哪些角色。

但是,應該指出,這是一個問題,主要是因爲您不正確地使用角色。即使在正式的微軟文檔中,我也看到了這一切,這是問題的一部分。類似「Admin」的是;角色是不同的,應該是像「CanEdit」的東西。組或用戶可以分配角色,因此「Admin」組中的任何用戶都具有「CanEdit」角色。然後,您不必更改操作上的角色配置,因爲無論哪個用戶或組都具有編輯功能,編輯功能都是可編輯的。

1

也許你應該看看訪問控制是如何組織的:https://nsecurity.codeplex.com/。下面是一個簡單的解決方案,概述了訪問控制條目,訪問控制列表的原理,以及如何設置受安全限制影響的項目訪問。這種(dis-)允許用戶訪問特定項目的方式非常類似於在Windows文件系統中組織的方式。

的想法很簡單:不是給用戶權限(不)做這做那,在項目守衛並授予權限/拒絕一次簡單的條件被滿足。換句話說,安全不是面向用戶,而是面向「安全」。或者,鍵用於鎖定/解鎖門,但不防止用戶在附近移動。