2013-02-19 81 views
0

我想扩展关键字的过滤器的授权属性,而无需创建自定义授权对象。授权属性扩展新的关键字

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

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

这样做的用法是

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

回答

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); 
    } 
} 
+0

我已经看了,并没有能够弄清楚如何让我的自定义身份验证工作中的新关键字。你能提供样品吗?这是我到目前为止。 – Thuthinh 2013-02-19 15:14:10

+0

@ user2085818我为您提供了一个示例 – 2013-02-19 22:02:30