将自定义模型绑定器绑定到自定义AuthorizeAttribute
问题描述:
在我的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对象。
答
模型绑定器在授权后进入mvc请求管道中。所以,基本上mvc将首先在AuthorizeAttribute的OnAuthorization方法中授权请求,一旦授权成功,MVC将尝试绑定模型。
但仍然可以使用OnAuthorization这样的方法。
public override void OnAuthorization(AuthorizationContext filterContext)
{
var value = filterContext.Controller.ValueProvider.GetValue("anyproperty");
...
}
谢谢。但我不明白应该放置什么“任何属性”?抱歉让人困惑。请再次检查我编辑的问题。 –
您想要绑定模型,在模型中您将拥有一些属性,您可以使用过滤器上下文获取这些属性值,并且可以在实际模型绑定之前在此验证它。 – Mukund