我们的应用程序具有 a 的概念PermissionAttribute
。该属性在我们应用程序的基础层中定义,我们的命令和查询都使用该属性进行修饰。由于这个属性是在基础层中定义的,我们不能(也不想)让它继承FilterAttribute
或实现System.Web.Mvc.IActionFilter
它。
我们仍然希望将此属性应用于控制器操作,如下所示:
[Permission(Permissions.Administration.ManageUsers)]
public ActionResult Index()
{
return this.View();
}
基于此属性,应应用适当的安全检查。我一直在浏览 MVC 代码库以找到合适的挂钩来自定义 MVC 行为,以允许基于此自定义属性添加这些安全检查。我虽然关于创建一个从其方法ControllerActionInvoker
返回一个自定义的自定义,该自定义将返回基于 的存在而创建的自定义,但感觉工作量很大,我不确定这是正确的行走路径.ReflectedControllerDescriptor
GetControllerDescriptor
FilterAttribute
PermissionAttribute
什么是定制 MVC 管道以便我们可以处理这个非 MVC 相关属性的有效和愉快的方式?