You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中是否需要同时为HttpGet和HttpPost方法添加[Authorize]特性?

ASP.NET Core 控制器Get/Post方法授权配置问题解答
  • 两个方法都必须设置[Authorize(Policy = "AdminMs")]特性,不能只给HttpGet方法添加

原因说明

HttpGet 对应的方法仅用于返回创建操作的录入页面,添加授权是为了限制无权限用户看到操作入口。但HttpPost对应的方法才是实际处理数据提交、执行新增逻辑的核心接口,如果不为它添加授权校验,攻击者可以完全绕过页面入口,直接构造HTTP POST请求调用该接口提交非法数据,造成严重的权限绕过漏洞。

优化方案

如果当前控制器下的所有接口都需要AdminMs权限校验,可以直接将授权特性标注在控制器类上,无需为每个Action重复添加,减少冗余代码同时避免漏加风险:

[Authorize(Policy = "AdminMs")] // 加在Controller类上,所有Action自动继承权限校验
public class YourController : Controller
{
    [HttpGet]
    public async Task<IActionResult> MSCreate()
    {
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> MSCreate(empolyee model)
    {
    }

    // 其余同控制器下的Action也会自动继承授权校验
}

如果控制器下存在部分不需要该权限的接口,单独给对应方法添加[AllowAnonymous]特性即可。

内容的提问来源于stack exchange,提问作者sammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:45:01