MVC3:自定义AuthorizeAttribute

TK1*_*TK1 3 asp.net-mvc-3

我实现Custom Authorize AttributeMVC3.我将页面级权限存储在数据库中,并希望将我的authorize属性传递给页面ID.某种东西:

[CustomAuthorize(PageID = 1)]
public ActionResult About()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

我如何实现Authorize Attribute,因为AuthorizeCore在覆盖中只需要一个参数?

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*ber 5

您将定义一个类级变量来保存PageID,您的属性的构造函数会将其作为参数.或者像在示例中一样使用它,您将创建一个名为PageID的公共属性.

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    public int PageID{get; set;}

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
         //use PageID to do checks here.
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的内部AuthorizeCore,你将使用该属性/字段值来进行检查.