如何使用AntiForgeryToken?
在Controller或者action方法上方添加[ValidateAntiForgeryToken]
在View中使用Tag Helpers
[HttpPost]
[Authorize("NotAuthorized")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterDTO registerDTO)
原理
跟之前的区别主要是多了一个Form token,通过验证Form token可以判断是Client还是attacker发送的请求;
注意:
如果页面中没有使用Tag Helpers标签,无法生成Form token。
全局添加ValidateAntiForgeryToken
//it adds controllers and views as services
services.AddControllersWithViews(options =>
{
//options.Filters.Add<ResponseHeaderActionFilter>(); //无法传递参数
var logger = services.BuildServiceProvider().GetRequiredService<ILogger<ResponseHeaderActionFilter>>();
options.Filters.Add(new ResponseHeaderActionFilter(logger)
{
Key = "MyKeyFromGlobal",
Value = "MyValueFromGlobal",
Order = 2
}); //可以传递参数
//options.Filters.Add<PersonCreateAndEditPostActionFilter>();
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()); //不带Auto不应用于HttpGet
});
Gitee获取源码: