Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
364 views
in Technique[技术] by (71.8m points)

c# - Custom AuthorizeAttribute

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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))
        {
            ...
        }
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...