是否可以创建一个检查条件的属性,然后根据该条件停止装饰方法执行或让装饰方法继续执行?
现在这个显而易见的问题。如果是这样,怎么样?如果没有,那么还有值得一试的工作吗?
此属性的总体目标是,在ASP.NET MVC中,检查用户是否已获得授权,如果未授权,则返回特定的JsonResult
(在属性中定义),或者让其进行修饰方法继续执行。我看到的一个明显的问题是,如果控制器操作的类型与ActionResult
或JsonResult
不同,则存在运行时错误的可能性。
答案 0 :(得分:2)
对于您的特定情况,您可以使用ASP.NET MVC 过滤器来执行您需要的操作。让您的属性扩展AuthorizeAttribute。
public class MustHaveFooAccessAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// Return true or false after checking authorization
}
}
答案 1 :(得分:1)
使用属性是不可能的 - 在编译时解析属性。它们不会在运行时执行。
通过反射来管理属性“控制”的特定行为。