小编Muh*_*aaz的帖子

“HttpRequest”不包含“EnableRewind”的定义

我正在尝试在我创建的自定义授权处理程序中使用 EnableRewind 方法,但收到错误“'HttpRequest' 不包含 'EnableRewind' 的定义”,我需要访问其中的正文,但如果我这样做代码中显示我在控制器中收到错误“输入不包含任何 JSON 令牌。期望输入以有效的 JSON 令牌开头,....”这是我的处理程序,我从启动文件注入了 IHttpContextAccessor

public class ForPrivateProfileBodyMustOwnRecordOrShouldBeInAdminRoleHandler : AuthorizationHandler<ForPrivateProfileBodyMustOwnRecordOrShouldBeInAdminRole>
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    public ForPrivateProfileBodyMustOwnRecordOrShouldBeInAdminRoleHandler(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, 
          ForPrivateProfileBodyMustOwnRecordOrShouldBeInAdminRole requirement)
    {
       var reader = new System.IO.StreamReader(_httpContextAccessor.HttpContext.Request.Body);

        
        
        var body = reader.ReadToEndAsync().Result;
        //this line is producing error
        var req = _httpContextAccessor.HttpContext.Request.EnableRewind();
        var request = Newtonsoft.Json.JsonConvert.DeserializeObject<PrivateProfileModel>(body);
        var ownerId = context.User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;
        if (request.UserId.ToString() != ownerId && !context.User.IsInRole("Admin"))
        {
            context.Fail();
            return Task.CompletedTask;
        }
        //all checks …
Run Code Online (Sandbox Code Playgroud)

authorization asp.net-core

2
推荐指数
1
解决办法
6212
查看次数

标签 统计

asp.net-core ×1

authorization ×1