1

我想在我的网站中处理用户权限(编辑、读取、新建),我正在考虑传递MyRoles 具有用户权限代码的附加参数字节,即:0-只读、1-完全控制、2-编辑和读取

那么我如何覆盖Html.ActionLinkrazor 方法来处理它,我的方法是处理这个问题的最佳方法(用户权限)吗?

4

1 回答 1

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")
}

为了避免编写这些 if,您可以编写一个自定义 HTML 助手:

@Html.RoleActionLink("read the news", "Some Action", "Readers")

默认的 Membership 和 Role 提供程序使用默认的 aspnetdb,但您当然可以扩展或编写自定义的提供程序以查询您自己的数据。

于 2012-08-17T21:22:11.790 回答