在一个asp.net MVC应用程序中,一个同事试图在网站的布局控件中建立一个角色依赖的UI元素集,而我的同事想要使一个html扩展显示或不基于用户的角色关系。
同事希望能够测试特定链接链接到的操作,并检查用户是否被授权访问该链接。为了做到这一点,最好针对控制器操作运行所有授权过滤器。
为此,必须检索为特定操作注册的所有授权过滤器。
有人知道如何获取与特定控制器动作相关的授权过滤器属性吗?
像这样
typeof(MyController).GetType()
.GetMethod("action")
.GetCustomAttributes(true)
.Where(attr=>attr is IAuthorizationFilter).Cast<IAuthorizationFilter>()
但是你必须使用filtercontext。就我个人而言,出于测试目的,我会将过滤器功能与过滤器本身精确地分开。你会有实际的" authorizator "对象它会被过滤器调用