在我的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对象。
答案 0 :(得分:1)
模型绑定器在授权后进入mvc请求管道。因此,基本上mvc将首先在AuthorizeAttribute的OnAuthorization方法中授权请求,一旦授权成功,MVC将尝试绑定模型。
但是你仍然可以像这样在 OnAuthorization 方法中使用该属性。
public override void OnAuthorization(AuthorizationContext filterContext)
{
var value = filterContext.Controller.ValueProvider.GetValue("anyproperty");
...
}