我創建了我自己的用戶權限表,其中每個用戶可以屬於多個組和許多安全角色。但是,我有以下爲我_layout視圖的一部分: -基於用戶自定義組顯示和隱藏_layout視圖部分
<li class="nav-header hidden-tablet"style="background-color:#3E9BD4 ; color:white">User Section</li>
<li><a class="ajax-link" href="~/Home/Contact"><i class="icon-home"></i><span class="hidden-tablet">contact</span></a></li>
<li class="nav-header hidden-tablet"style="background-color:#3E9BD4 ; color:white">Administration Section</li>
<li><a class="ajax-link" href="~/SecurityGroup/"><i class="icon-home"></i><span class="hidden-tablet">Security Groups</span></a></li>
<li><a class="ajax-link" href="~/SecurityRole/"><i class="icon-home"></i><span class="hidden-tablet">Security Roles</span></a></li>
<li><a class="ajax-link" href="~/AuditInfo"><i class="icon-home"></i><span class="hidden-tablet">Audit</span></a></li>
<li><a class="ajax-link" href="~/SecurityGroup/ADUsers"><i class="icon-home"></i><span class="hidden-tablet">Active Directory</span></a></li>
那麼如何只有在當前用戶屬於與或命名爲「管理員」預定義的安全角色相關的集團我可以顯示管理部分直接與這個安全角色相關聯。
由於用戶存在於Active Directory中,因此我沒有在應用程序內存儲任何用戶信息。所以,我有以下型號類別: -
public partial class Group
{
public Group()
{
this.UserGroups = new HashSet<UserGroup>();
this.SecurityRoles = new HashSet<SecurityRole>();
}
public int GroupID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public byte[] timestamp { get; set; }
public virtual ICollection<UserGroup> UserGroups { get; set; }
public virtual ICollection<SecurityRole> SecurityRoles { get; set; }
}
public partial class UserGroup
{
public int GroupID { get; set; }
public string UserName { get; set; }
public virtual Group Group { get; set; }
}
}
public partial class SecurityRole
{
public SecurityRole()
{
this.SecurityroleTypePermisions = new HashSet<SecurityroleTypePermision>();
this.SecurityRoleUsers = new HashSet<SecurityRoleUser>();
this.Groups = new HashSet<Group>();
}
public int SecurityRoleID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public byte[] timestamp { get; set; }
public virtual ICollection<SecurityroleTypePermision> SecurityroleTypePermisions { get; set; }
public virtual ICollection<SecurityRoleUser> SecurityRoleUsers { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
public partial class SecurityRoleUser
{
public int SecurityRoleID { get; set; }
public string UserName { get; set; }
public virtual SecurityRole SecurityRole { get; set; }
}
霸菱記住,_layout的看法是不是一個強類型的視圖,所以我不能夠定義的模型級輔助方法,如公共布爾IsAdmin(用戶名字符串)。
在此先感謝您的幫助。
所以你認爲沒有其他的方法來實現這一點,但使用應該在我當前每個視圖上調用的部分視圖? –
我不是說這是不可能的,但我認爲這是一個簡單的解決方案。 _layout是頁面上的第一個渲染調用之一,因此很難將模型代碼放入。那是什麼部分意見。 – ElliotSchmelliot
查看我對強類型佈局和母版頁的編輯。我希望這有幫助! – ElliotSchmelliot