我使用SQL Server上的EF Code First繼承了相當大且複雜的ASP.NET MVC3 Web應用程序。它使用ASP.NET成員身份與數據庫身份驗證角色控制器操作通過派生自AuthorizeAttribute的屬性進行保護,該角色將角色映射到操作。有更細的點的擴展方法,例如向特定角色顯示特定的小部件。這很好,我對當前的安全模型有了很好的理解。對現有應用程序應用細粒度安全性
我被要求在數據級別提供更細粒度的安全性。例如,「客戶」用戶只能看到與他們自己相關的數據(在整個數據庫中),而不是其他客戶。問題在於,'客戶'只有5種不同的類型中的1種,並具有各自的特定限制(9種角色中的每一種都是這5種類型中的一種)。
我能想到的最好的事情是遍歷所有的數據存儲庫,並通過每種用戶類型的過濾器來擴展每個LINQ語句/查詢。即使我有時間,它似乎不是最優雅的方式。
有什麼建議嗎?我真的不知道從哪裏開始,所以任何事情都可能有幫助。
非常感謝。
這是一個很好的開始方式,但如果你需要有超級用戶可以看到其他人的數據,這將變得更加複雜。希望所有查詢都是通過某種服務層完成的。那麼在任何複雜程度下都可以很容易地實現安全。不要忘記保護更新。 (用戶A不能修改用戶B的數據。) – Ryan