我正在使用ASP.NET MVC4。
这是我的用户角色。
1. Administrator
2. L1 Admin
3. L2 Admin
管理员组用户拥有设置权限(包括添加和权限设置)。
如果一个用户是管理员组的成员,他只能看到与上述设置相关的菜单。
我有一个菜单表格,其中包含菜单详细信息。根据当前用户的角色显示一些功能,如删除、编辑,而这些功能不在顶部菜单中可用。删除、编辑链接放置在表格内列出数据时。对于此类条目,IsVisible 值为 false。
MenuID - MenuName - Controller - Action - ParentID - IsVisible
我有一个roleMenu表,其中包含分配给每个角色的菜单。
RoleID - MenuID
如果管理员登录,他可以看到所有菜单。 如果L1Admin登录,他只能看到分配给他的菜单。
我创建了一个用于认证的自定义属性,并在此之后查询数据库,根据控制器和操作(表Menu连接RoleMenu)获取用户的权限。因此,如果用户尝试通过在浏览器中键入URL来访问操作,则可以限制请求。
如果我以L1Admin身份输入,我只能看到列表页面,而菜单已经正确创建了。在列表页面中,我使用HTML语言进行列表编写。那么如何根据已登录用户的权限隐藏编辑/详细信息链接。
<div style="float: left">
<table width="50%">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td style="width:30%;">
@Html.DisplayFor(modelItem => item.Name)
</td>
<td style="width:20%;">
// I need to hide EDIT/DELETE based on the permission setting of Current logged in user.
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
<a href="Server/@item.ID">Details</a> |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</table>
</div>
提前感谢。
编辑
我将权限细节存储在数据库中。