我正在使用 ASP.NET MVC4。
这是我的用户角色
1. Administrator
2. L1 Admin
3. L2 Admin
管理员组用户有设置权限(用于添加、权限设置)。
查看日志、错误报告等
如果用户是管理员组的成员,他只能看到与上述设置相关的菜单。
我有一个菜单表,上面有菜单详细信息。有一些功能(如删除、编辑)根据当前用户的角色显示,并且在顶部菜单中不可用。列出数据时,删除、编辑链接放置在表格内。这也包括在内,对于该类型的条目,IsVisible 为 false。
MenuID - MenuName - Controller - Action - ParentID - IsVisible
我有一个 roleMenu 表,其中有分配给每个角色的菜单。
RoleID - MenuID
如果管理员正在登录,他可以看到所有菜单。
如果L1Admin正在登录,他只能看到分配给他的菜单。
我创建了一个用于身份验证的自定义属性,然后查询数据库并根据控制器和操作(表菜单加入角色菜单)获取用户的权限。因此,如果用户尝试通过在浏览器中键入内容来通过 URL 访问操作,我可以限制请求。
如果我以 L1Admin 身份进入,我只能看到列表页面并且菜单已正确创建。
在我用于列表的列表页面中。那么如何根据登录用户的权限隐藏编辑/详细信息链接。
<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>
提前致谢。
EDIT
我将权限详细信息存储在数据库中。