2

在一个asp.net MVC 应用程序中,一位同事正试图在网站的布局控件中构建一组与角色相关的 UI 元素,而我的同事想要根据用户的角色关系制作一个显示或不显示的 html 扩展。

同事希望能够测试特定链接所链接的操作,并检查用户是否有权访问该链接。为此,最好针对控制器操作运行所有授权过滤器。

为了做到这一点,必须检索为特定操作注册的所有授权过滤器。

有谁知道如何仅获取与特定控制器操作关联的授权过滤器属性?

4

1 回答 1

2

像这样的东西

typeof(MyController).GetType()
.GetMethod("action")
.GetCustomAttributes(true)
.Where(attr=>attr is IAuthorizationFilter).Cast<IAuthorizationFilter>()

但是您必须伪造过滤器上下文。就个人而言,出于测试目的,我会将过滤器功能与过滤器本身分开。因此,您将拥有过滤器将调用的实际“授权者”对象。

于 2013-04-29T06:56:11.610 回答