gpt4 book ai didi

asp.net-mvc - 确保每个 Controller 方法都有一个 ValidateAntiForgeryToken 属性?

转载 作者:行者123 更新时间:2023-12-03 14:35:32 25 4
gpt4 key购买 nike

有什么方法可以集中强制执行每个操作方法都必须具有“ValidateAntiForgeryToken”属性?我认为这必须通过扩展一个“路由”类来完成。

编辑:或者也许在应用程序启动时做一些反射(reflection)?

最佳答案

是的。你可以通过创建你自己的 BaseController 来实现这个,它继承了 Mvc Controller ,并重载了 OnAuthorization()。在强制执行之前,您要确保它是一个 POST 事件:

public abstract class MyBaseController : Controller
{
protected override void OnAuthorization(AuthorizationContext filterContext)
{
//enforce anti-forgery stuff for HttpVerbs.Post
if (String.Compare(filterContext.HttpContext.Request.HttpMethod,
System.Net.WebRequestMethods.Http.Post, true) == 0)
{
var forgery = new ValidateAntiForgeryTokenAttribute();
forgery.OnAuthorization(filterContext);
}
base.OnAuthorization(filterContext);
}
}

一旦你有了它,确保你的所有 Controller 都继承自这个 MyBaseController (或任何你称之为的东西)。或者,如果您喜欢使用相同的代码,您可以在每个 Controller 上执行此操作。

关于asp.net-mvc - 确保每个 Controller 方法都有一个 ValidateAntiForgeryToken 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1937962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com