【问题标题】:Wiring up Custom Model Binder to Custom AuthorizeAttribute将自定义模型绑定器连接到自定义 AuthorizeAttribute
【发布时间】:2016-01-13 06:49:38
【问题描述】:

在我的 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;
        }
    }
}

我想做的是绑定 UserPermissions 对象。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。但我不明白应该放置什么“任何财产”?很抱歉造成混淆。请再次检查我编辑的问题。
    • 您想绑定模型,在模型中您将拥有一些属性,您可以使用过滤上下文在此处获取这些属性值,您可以在实际模型绑定之前在此处验证它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2019-06-20
    • 2012-02-18
    • 2012-01-29
    • 2013-05-20
    相关资源
    最近更新 更多