我想在我的网站中处理用户权限(编辑,阅读,新),我正在考虑传递具有用户权限代码的附加参数字节MyRoles
,即:0-只读,1 - 完全控制, 2编辑和阅读
那么我如何覆盖Html.ActionLink
razor方法来处理它,并且我的方法是处理此问题的最佳方法(用户权限)?
答案 0 :(得分:0)
并且我的方法是处理此问题的最佳方法(用户权限)?
不,将角色作为参数传递给您的操作会代表一个安全漏洞,因为用户可以传递他喜欢的任何角色。
执行此操作的正确方法是使用角色提供程序。您可以将角色与用户关联,然后定义用户在访问特定操作时所需的角色。
例如:
[Authorize(Roles = "Readers")]
public ActionResult SomeAction()
{
// only users belonging to the readers role will be able to access this action
}
一旦您正确地保护了服务器端,您可以在Razor视图中有条件地显示/隐藏锚点和内容:
@if (User.IsInRole("Readers"))
{
@Html.ActionLink("read the news", "SomeAction")
}
为避免编写这些ifs,您可以编写自定义HTML帮助程序:
@Html.RoleActionLink("read the news", "Some Action", "Readers")
默认的成员资格和角色提供者使用默认的aspnetdb,但您当然可以扩展或编写自定义的aspnet以查询您自己的数据。