ABP框架怎么配置跨站拦截,配置之后就不需要写[IgnoreAntiforgeryToken]
时间: 2024-10-08 11:17:59 浏览: 28
在ABP框架中,如果已经启用了全局的CSRF保护并且在视图模板中自动添加了AntiForgeryToken,那么大部分情况下不需要手动标记控制器方法为`[ValidateAntiForgeryToken]`。默认情况下,只要控制器的操作方法使用了`[HttpPost]`或其他可能导致提交数据的HTTP方法,并且包含一个`asp-action`属性指向的路由,则会自动进行反请求伪造验证。
如果你希望所有`HttpPost`操作都自动进行验证,可以这样做:
1. 确保`AuthorizationConfiguration`类中的`EnableAntiForgeryToken`属性值为`true`,就像之前我提到的那样。
2. 如果你想进一步简化,可以创建一个基础控制器基类,然后在这个基类上声明一些约定,例如`HttpPostAttribute`,它会在所有派生类的`HttpPost`方法上自动应用`ValidateAntiForgeryToken`。
```csharp
public abstract class AuthenticatedController : ControllerBase
{
[HttpPost]
public virtual IActionResult ProtectedPost() => Ok();
}
```
然后,所有的受保护的控制器只需继承这个基类即可:
```csharp
public class YourController : AuthenticatedController
{
// POST actions will automatically have CSRF protection
[HttpPost]
public IActionResult YourAction() => ...;
}
```
这样,在`YourAction`等POST方法中,无需显式标记`[ValidateAntiForgeryToken]`。
阅读全文