我想在我的网站中处理用户权限(编辑、读取、新建),我正在考虑传递MyRoles
具有用户权限代码的附加参数字节,即:0-只读、1-完全控制、2-编辑和读取
那么我如何覆盖Html.ActionLink
razor 方法来处理它,我的方法是处理这个问题的最佳方法(用户权限)吗?
我想在我的网站中处理用户权限(编辑、读取、新建),我正在考虑传递MyRoles
具有用户权限代码的附加参数字节,即:0-只读、1-完全控制、2-编辑和读取
那么我如何覆盖Html.ActionLink
razor 方法来处理它,我的方法是处理这个问题的最佳方法(用户权限)吗?
我的方法是处理此问题的最佳方法(用户权限)吗?
不,将角色作为参数传递给您的操作将代表安全漏洞,因为用户可以传递他喜欢的任何角色。
执行此操作的正确方法是使用角色提供程序。您将角色与用户相关联,然后定义用户需要成为哪个角色才能访问特定操作。
例如:
[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")
}
为了避免编写这些 if,您可以编写一个自定义 HTML 助手:
@Html.RoleActionLink("read the news", "Some Action", "Readers")
默认的 Membership 和 Role 提供程序使用默认的 aspnetdb,但您当然可以扩展或编写自定义的提供程序以查询您自己的数据。