自定义AuthorizeAttribute
我有一个名为CheckArticleExistence的AuthorizeAttribute子类。
我想使用我在动作中收到的参数设置一个属性。 像这样:
[CheckArticleExistence(Id=articleId)] public ActionResult Tags(int articleId) { ... }
我想使用articleId来检查数据库中是否存在该文章,如果不存在,我可以使用OnAuthorization方法触发不同的内容。
有什么办法吗? 谢谢。
我认为您可以从AuthorizationContext获取articleId ,因此您不需要将其作为属性的属性传递。
你可以这样做:
[CheckArticleExistence] public ActionResult Tags(int articleId) { ... }
这个工作了(谢谢!):
[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)) { ... } } }
您可以在存储库中放置一个方法来检查文章是否存在。
public ActionResult Tags(int articleId) { if (repository.ArticleExists(articleID)) { // Do your thing } else { return view("NotFound"); // or do something else } }
或者您可以简单地尝试检索文章,并检查空对象。
上述就是C#学习教程:自定义AuthorizeAttribute分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public ActionResult Tags(int articleId) { var article = repository.GetArticle(); if (article !=null) { // Do your thing } else { return view("NotFound"); // or do something else } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1020619.html