带有可选参数的自定义属性

时间:2015-07-01 14:01:17

标签: c# asp.net asp.net-mvc custom-attributes

我有这个自定义属性(自定义MVC授权):

public class CustomAuthorizeAttribute : AuthorizationFilterAttribute
{
    public string Users { get; set; } //its always null!

    public override void OnAuthorization(HttpActionContext actionContext)
    {
        string user = Thread.CurrentPrincipal.Identity.Name.Split('\\')[1];

        AdProxy AdProxy = new AdProxy();

        if (!AdProxy.IsUserInGroup(user, Users))
        {
            actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);

        }
    }

}

我这样用:

[CustomAuthorizeAttribute(Users = "Admin")]

但是在调试时,“Users”的值始终为null。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您使用.net Framework 4.5.1更改为4.5,它应该可以工作。

class CustomAuthorizeAttribute : AuthorizeAttribute
{
    public string Users { get; set; }
    public override void OnAuthorization(AuthorizationContext filterContext)
    {

        base.OnAuthorization(filterContext);
    }
}

答案 1 :(得分:0)

试试这个:

 public class CustomAuthorizeAttribute : AuthorizeAttribute
 { ... }