在调用之前确定控制器操作是否已获得授权

时间:2012-09-21 13:54:13

标签: c# asp.net-mvc authorization

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

所以,在最简单的层面上,我希望能够做到这样的事情:

var isAuthorized = IsAuthorized("ControllerName", "ActionName", currentUser);

然后,IsAuthorized方法将查看操作上的任何AuthorizeAttributes,并评估给定用户是否能够执行它。

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

1 个答案:

答案 0 :(得分:5)

寻找方法的第二步确实导致了我正在寻找的东西。我会在这里留下这个问题,以防它引导其他人回答这个问题。

Create an authorized action link extension for ASP.NET MVC 3

该实现完全使用我正在寻找的语法,并在实践中工作。