我正在使用ASP.NET MVC4。ASP.NET MVC - 如何根据登录的用户角色权限隐藏或显示链接/按钮?
这是我的UserRole
1. Administrator
2. L1 Admin
3. L2 Admin
管理员组的用户对设置(使用添加,权限设置)的权限。 查看日志,错误报告等。
如果用户是管理员组的成员,他只能看到与上述设置相关的菜单。
我有一个菜单表,有菜单的细节。有一些功能,如删除,编辑,这些功能基于当前用户的角色显示,并且不在顶部菜单中提供。列出数据时,删除,编辑链接放置在表格内。这也包括,对于这种类型的入口,IsVisible是错误的。
MenuID - MenuName - Controller - Action - ParentID - IsVisible
我有一个roleMenu表,具有被分配给每个角色的菜单。
RoleID - MenuID
如果Admininstrator正在登录,他可以看到所有菜单。 如果L1Admin正在登录,他只能看到分配给他的菜单。
我创建了一个用于身份验证的自定义属性,之后我查询数据库并根据Contoller和Action(表菜单加入RoleMenu)获取用户权限。所以如果用户通过输入浏览器尝试访问通过URL的操作,我可以限制请求。
如果我是以L1Admin的身份输入的,我只能看到列表页面,并且菜单是创建correclty。 在我用于列表的列表页面中。那么如何隐藏基于登录用户权限的编辑/详细信息链接。
<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>
在此先感谢。
编辑
我存储在数据库的权限的详细信息。
喜VeekKayBee,我也有类似的要求,你得到的解决方案呢? – gs11111 2014-07-16 07:17:06
@ gs11111是的,我从下面的答案得到了解决方案。只要通过所有的解决方案,你会得到一些想法。我不能建议一个正确的答案。所有的答案给我的投入来实现这一点。 – kbvishnu 2014-07-16 08:14:11
我经历了解决方案,但我无法弄清楚如何应用它。你可以请你概述你申请的解决方案。这将是一个很好的帮助 – gs11111 2014-07-16 10:16:50