0

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

我知道内置关键字是角色,用户。我想添加一个新的关键字调用级别,看看用户访问级别是否大于某个级别。

这将允许我只为用户创建一个角色。

这个的用法是

[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);
    }
}
4

1 回答 1

0

这不可能只是将新过滤器添加到内置的AuthorizeAttribute. 您将需要创建一个继承自 的新属性AuthorizeAttribute

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

编辑:好的,好的开始。你的问题是你不能Level > 1像你正在尝试的那样做。假设您尝试说当用户Level大于 1 时要通过什么身份验证,您可以更改属性中的属性来指示这一点。

例如

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);
    }
}
于 2013-02-19T05:48:18.980 回答