授权属性扩展新关键字

时间:2013-02-19 05:44:38

标签: c# asp.net-mvc authorize-attribute

我想在不创建自定义授权对象的情况下扩展Authorize Attribute的关键字过滤器。

我知道build in keyword是角色,用户。我想添加一个新的关键字调用级别,并查看用户访问级别是否大于特定级别。

这样我就可以为用户创建一个角色。

这个用法是

[Authorize(level > 1)]

如果您需要其他信息,请告诉我,以便您更好地了解我要解决的问题。

我看过但无法解决此问题。你能提供代码样本吗?这就是我所拥有的。我在使用关卡过滤器时遇到错误。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
[Auth(Level > 1)]
public ActionResult Index()
{
}

public class Auth : AuthorizeAttribute
{
    public int Level { get; set; }
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
      base.OnAuthorization(filterContext);
    }
}

1 个答案:

答案 0 :(得分:0)

这不可能仅为内置AuthorizeAttribute添加新过滤器。您需要创建一个继承自AuthorizeAttribute

的新属性

有关于创建自定义AuthorizeAttributes的大量博客文章和问题。

编辑: 好的,好的开始。您的问题是您不能像尝试那样Level > 1。假设您试图说明当用户Level大于1时您要传递的身份验证,则可以在属性中更改您的属性以指示此情况。

E.g。

public class Auth : AuthorizeAttribute
{
    public int MinLevel { get; set; }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        //This is where you will need to determine if the user is authorized based upon the minimum level.
        base.OnAuthorization(filterContext);
    }
}