首页 > 解决方案 > Post Body 在策略授权中访问后丢失

问题描述

所以我在我的 asp.net 核心应用程序中有一个策略授权。对于一项特定的策略,我需要访问 http post 请求的正文。所以我这样读身体:

protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AccessRequirement requirement)
    {
        if (context.Resource is AuthorizationFilterContext authContext)
        {
            using (var stream = new StreamReader(authContext.HttpContext.Request.Body)
            {
                dynamic body = stream.ReadToEnd();
                // do more stuff
        }

        return Task.CompletedTask;
    }

到目前为止一切顺利,一切正常,但是,在控制器本身中,主体为空。我猜是因为流已经被读取了?如何重置流?

大摇大摆告诉我

{
  "": [
    "A non-empty request body is required."
  ]
}

标签: c#asp.net-coreauthorizationpolicy

解决方案


推荐阅读