C# Custom AuthorizeAttribute – Implementing in ASP.NET MVC

asp.net-mvcc++

I have a child class of AuthorizeAttribute named CheckArticleExistence.

I would like to set an attribute using the parameter that I receive in the action. Like this:

[CheckArticleExistence(Id=articleId)]
public ActionResult Tags(int articleId)
{
...
}

I want to use the articleId to check if that article exists in the database, and if it doesn't I can trigger something different using the OnAuthorization method.

Is there any way?
Thanks.

Best Answer

This one worked (thanks!):

[CheckArticleExistence]
public ActionResult Tags(int articleId)
{
    ...
}

...

public class CheckArticleExistenceAttribute : AuthorizeAttribute
{
    private int articleId;

    public override void OnAuthorization(AuthorizationContext filterContext)
    {

        this.articleId = int.Parse(filterContext.RouteData.Values["id"].ToString());

        if (!Article.Exists(articleId))
        {
            ...
        }
    }
}
Related Question