将自定义模型绑定器连接到自定义授权属性

本文关键字:自定义 授权 属性 连接 模型 绑定 | 更新日期: 2023-09-27 18:30:16

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

编辑:添加代码块

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;
        }
    }
}

我想做的是绑定用户权限对象。

将自定义模型绑定器连接到自定义授权属性

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

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

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