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