“context.Resource as AuthorizationFilterContext” returning null in ASP.NET Core 3.0

前端 未结 6 533
情书的邮戳
情书的邮戳 2020-12-16 07:50

I am trying to implement a custom authorization requirement following a tutorial. It seems like context.Resource no longer contains AuthorizationFilterCo

6条回答
  •  失恋的感觉
    2020-12-16 08:18

    public class CanEditOnlyOtherAdminRolesAndClaimsHandler : AuthorizationHandler { private readonly IHttpContextAccessor httpContextAccessor; public CanEditOnlyOtherAdminRolesAndClaimsHandler(IHttpContextAccessor httpContextAccessor) { this.httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor));

        }
    
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
                                                       ManageAdminRolesAndClaimsRequirement requirement)
        {
    
            var loggedInAdminId = context.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value.ToString();
    
            var adminIdBeingEdited = httpContextAccessor.HttpContext.Request.Query["userId"].ToString();
    
            if (context.User.IsInRole("Admin") &&
                context.User.HasClaim(claim =>
                claim.Type == "Edit Role" && claim.Value == "true") && adminIdBeingEdited.ToLower() != loggedInAdminId.ToLower())
            {
                context.Succeed(requirement);
            }
    
            return Task.CompletedTask;
        }
    
    }
    

提交回复
热议问题