如何在MVC中处理基于操作的权限

时间:2012-05-17 18:52:02

标签: c# asp.net-mvc asp.net-mvc-3 security permissions

我是MVC的新手,我想获得有关如何在我的应用程序中最好地处理基于操作的权限的建议。

我目前在控制器级别检查了一些全局权限,这些权限适用于呈现当前用户可以访问的视图等。

但是,一旦呈现了视图,我想做出诸如“启用DELETE按钮,只有用户具有当前所选项目的删除权限”的决定。此时,这些权限不再是全局但基于所选对象的上下文。

我应该如何编写代码来处理这种情况?

1 个答案:

答案 0 :(得分:2)

默认情况下,您的视图可以访问用户对象。

您可以查看View是否为User.IsInRole(“myDeleteRole”)。

@if(User.IsInRole("MyDeleteRole"))
{
<input type="subtmt" value="Delete">
}

我不知道这是不是最好的方式,而是我过去做过的事情

我想另一种方法是根据用户拥有的权限编写单独的视图。这样你就可以在控制器上执行逻辑并将用户发送到指定的视图

if(User.IsInRole("MyDeleteRole")
{
return View("MyDeleteView", vm)
}
else
{
return View("NoDeleteView", vm)
}