2016-01-13 139 views
1

在我的MVC 4网络应用程序中,当我收到请求时,需要使用自定义绑定器中的模型来执行一些授权逻辑。我的问题是,我不知道如何将我的模型和绑定器连接到filter属性。可能吗?将自定义模型绑定器绑定到自定义AuthorizeAttribute

编辑:添加代码块

public class FeatureCodeAttribute : AuthorizeAttribute 
{ 

    private string featureCode; 
    private userPermissions; 

    public FeatureCodeAttribute(string code, UserPermissions permissions) 
    { 
     featureCode = code; 
     userPermissions = permissions; 
    } 

    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (HasFeature(userPermissions, featureCode)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

我想要做什么是绑定UserPermissions对象。

回答

1

模型绑定器在授权后进入mvc请求管道中。所以,基本上mvc将首先在AuthorizeAttribute的OnAuthorization方法中授权请求,一旦授权成功,MVC将尝试绑定模型。

但仍然可以使用OnAuthorization这样的方法。

public override void OnAuthorization(AuthorizationContext filterContext) 
{ 
    var value = filterContext.Controller.ValueProvider.GetValue("anyproperty"); 
    ... 
} 
+0

谢谢。但我不明白应该放置什么“任何属性”?抱歉让人困惑。请再次检查我编辑的问题。 –

+0

您想要绑定模型,在模型中您将拥有一些属性,您可以使用过滤器上下文获取这些属性值,并且可以在实际模型绑定之前在此验证它。 – Mukund