C# 在调用控制器操作之前,确定控制器操作是否已授权

C# 在调用控制器操作之前,确定控制器操作是否已授权,c#,asp.net-mvc,authorization,C#,Asp.net Mvc,Authorization,我试图解决的问题对我来说似乎很简单:我的应用程序有一个站点范围的菜单,用户可以从中导航到各个区域。菜单项只是ActionResult方法的链接。我在操作上使用自定义authorized属性来强制用户的授权角色。这很好,因为如果用户没有适当的角色,它会阻止用户执行操作。不过,我想做的是,如果他们无权执行该操作,甚至不显示导航到该操作的菜单选项 因此,在最简单的层面上,我希望能够做到以下几点: var isAuthorized = IsAuthorized("ControllerName", "Ac

我试图解决的问题对我来说似乎很简单:我的应用程序有一个站点范围的菜单,用户可以从中导航到各个区域。菜单项只是ActionResult方法的链接。我在操作上使用自定义authorized属性来强制用户的授权角色。这很好,因为如果用户没有适当的角色,它会阻止用户执行操作。不过,我想做的是,如果他们无权执行该操作,甚至不显示导航到该操作的菜单选项

因此,在最简单的层面上,我希望能够做到以下几点:

var isAuthorized = IsAuthorized("ControllerName", "ActionName", currentUser);
IsAuthorized方法随后将查看操作上的任何authorized属性,并评估给定用户是否能够执行它


是否存在这样一种方法?假设我们在进行此评估时没有控制器的实例

第二次寻找解决这个问题的方法实际上正是我想要的结果。我将把这个问题留在这里,以防它引导其他人找到这个答案


该实现使用的语法与我所寻找的语法几乎完全相同,并且在实践中有效

“自定义的
AuthorizeAttribute
”—您是指您自己编写的,还是该名称的内置属性之一?是的,我自己编写的用于实现特定授权要求的属性。在“public class MyAuthorizeAttribute:AuthorizeAttribute”中,您应该将其标记为已回答,即使您是回答者。