我创建了我自己的用户权限表,其中每个用户可以属于多个组和许多安全角色。但是,我有以下为我_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