這是我的第一個問題在stackoverflow,所以請溫柔。我正在使用MVC4,Entity Framework和SimpleMembership寫入一個倉庫應用程序的客戶門戶。倉庫爲多家公司提供內容。每個公司都有分部和部門。用戶將擁有不同的公司,部門和部門信息。我正在尋找一個優雅的訪問控制解決方案。到目前爲止,我的模型是這樣的:實現公司,部門,部門MVC4用戶訪問控制與EF
public class UserProfile
{
UserProfile()
{
this.AccessControl = new HashSet<AccessControl>();
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public Nullable<int> CompanyId { get; set; }
public virtual ICollection<AccessControl> { get; set; }
public virtual Company Company { get; set; }
}
public class AccessControl
{
public int AccessControlId { get; set; }
public int UserId { get; set; }
public int CompanyId { get; set; }
public Nullable<int> DivisionId { get; set; }
public Nullable<int> DepartmentId { get; set; }
public Boolean ReadAccess { get; set; }
public Boolean WriteAccess { get; set; }
// other properties for access control
public virtual UserProfile UserProfile { get; set; }
public virtual Company Company { get; set; }
public virtual Division Division { get; set; }
public virtual Department Department { get; set; }
}
public class Content
{
public int ContentId { get; set; }
public int CompanyId { get; set; }
public int DivisionId { get; set; }
public int DepartmentId { get; set; }
// Various other properties
public virtual Company Company { get; set; }
public virtual Division Division { get; set; }
public virtual Department { get; set; }
}
我的想法是,一個空司意味着所有部門和空指部各部門。我的問題是:
- 是編寫庫方法來檢索內容對象的列表基於它們的訪問控制列表上的用戶以及在CRUD觀點填充分工和部門選擇列表優雅的方式?
- 有沒有更好的方法來建立此訪問控制列表?
你是否已經有了一個「不雅」的解決方案,可以改善?對於公司,部門和部門而言,可能出現的'空'案件很難解決問題,甚至更多的是一種「優雅」的解決方案,不會有冗長的案件延期序列。如果沒有'null'sa查詢可能是:'var query = from c in context.Contents join in a context.AccessControls on new {c.CompanyId,c.DivisionId,c.DepartmentId} equals new {a.CompanyId,a。 DivisionId,a.DepartmentId}其中a.UserProfile.UserId == givenUserId選擇c;'但我未能擴展這個以覆蓋'null's。 – Slauma 2013-03-02 14:47:25
關於您的部門/部門選擇清單,您能否詳細說明您對CRUD視圖的設想? (即你想做什麼可以做一個視圖) – 2013-03-02 18:19:09
謝謝你的答案。如果用戶A有兩個訪問控制對象。一個可以訪問分區1,會計和另一個可訪問分區1,財務部門,然後在創建,更新或刪除時選擇列表將爲分部提供分區1,爲部門選擇列表提供會計和財務部。如果用戶對所有部門(即部門爲NULL)和部門銷售部門都有一個訪問控制對象,則選擇清單將包含所有定義的部門,並且僅包含銷售部門。 – tomc 2013-03-02 23:27:44