将Custom Model Binder连接到Custom AuthorizeAttribute

时间:2016-01-13 06:49:39

标签: c# asp.net-mvc asp.net-mvc-4

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

修改:添加代码块

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 个答案:

答案 0 :(得分:1)

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

但是你仍然可以像这样在 OnAuthorization 方法中使用该属性。

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