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

本文关键字:操作 权限 于操作 MVC 处理 | 更新日期: 2023-09-27 18:34:35

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

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

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

我应该如何编写代码来处理这种类型的场景?

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

默认情况下,

您的视图可以访问用户对象。

您可以在查看 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)
}