我是 MVC 的新手,我想获得有关如何在我的应用程序中最好地处理基于操作的权限的建议。
我目前在控制器级别检查了一些全局权限,这些权限可以很好地呈现当前用户可以访问的视图等。
但是,一旦呈现视图,我想做出诸如“启用删除按钮,仅当用户对当前选定的项目具有删除权限”之类的决定时,这些权限不再是全局的,而是基于上下文的选定的对象。
我应该如何编写代码来处理这种情况?
我是 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)
}