繁体   English   中英

如何在AuthorizationHandler中获取POST请求参数

[英]How get POST request params in AuthorizationHandler

我正在ASP.NET Core 2.2中实现基于策略的授权,但是无法访问Verification Handler中的POST请求参数。

我尝试做这样的事情:

mvcContext.HttpContext.Request.Form["key"]

但是当我访问Request.Form给我这个错误:

'mvcContext.HttpContext.Request.Form' threw an exception of type 'System.InvalidOperationException'

在此处输入图片说明 我尝试在Request.QueryString中使用GET参数并成功工作。

访问POST参数的正确方法是什么? 我错过了一些配置吗?

你可以像这样得到身体:

[HttpPost]
public string SampleMethod([FromBody] YourModel model)
{
    //access to the model here
}

如果要访问上下文,则应在启动类中注册IHttpContextAccessor

services.AddScoped<IHttpContextAccessor, HttpContextAccessor>();

根据您的屏幕截图,似乎您想从请求json主体中读取关键节点,如果是这样,则可以尝试将主体读取为json,然后获取节点值,例如

if (context.Resource is AuthorizationFilterContext mvcContext)
{
    var request = mvcContext.HttpContext.Request;
    request.EnableRewind();
    var reader = new StreamReader(request.Body);
    string body = reader.ReadToEnd();
    var model = JsonConvert.DeserializeObject(body, mvcContext.ActionDescriptor.Parameters.FirstOrDefault().ParameterType);
    JToken key;
    JObject.Parse(body).TryGetValue("key", StringComparison.InvariantCultureIgnoreCase, out key);

    request.Body.Seek(0, SeekOrigin.Begin);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM