为了账号安全,请及时绑定邮箱和手机立即绑定

拒绝包含未知查询参数的请求?

拒绝包含未知查询参数的请求?

C#
缥缈止盈 2022-11-21 20:39:54
使用 ASP.NET Core MVC,有没有办法返回BadRequest包含控制器未使用的查询参数的 HTTP 请求?我不是要针对存在的某些特定查询参数返回错误,我想拒绝所有包含服务器未解析为有意义的查询参数的请求。因此,换句话说,可以缺少有效的查询参数,但不能存在无效/无法识别的查询参数。
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

你可以使用action filter来获取动作parameters和请求的查询字符串queryParameters。然后判断查询参数是否都在动作中使用。


public override void OnActionExecuting(ActionExecutingContext context)

    {


        var parameters = context.ActionDescriptor.Parameters;

        var queryParameters = context.HttpContext.Request.Query;


        if (queryParameters.Select(kvp => kvp.Key).All(queryParameter => parameters.Any(p => p.Name == queryParameter)))

        {

            base.OnActionExecuting(context);

        }

        else

        {

            context.Result = new BadRequestObjectResult("Querystring does not match");

        }


    }

在控制器中:


[TypeFilter(typeof(TestQueryActionFilter))]

public void MyAction(int id, string name)


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信