protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, HasMenuAccessRequirement requirement) { var area = _httpContextAccessor.HttpContext.Request.RouteValues.FirstOrDefault(m => m.Key == "area").Value?.ToString(); var controller = _httpContextAccessor.HttpContext.Request.RouteValues.FirstOrDefault(m => m.Key == "controller").Value?.ToString(); var action = _httpContextAccessor.HttpContext.Request.RouteValues.FirstOrDefault(m => m.Key == "action").Value?.ToString(); var menuRes = _menuService.GetMenuByRouteDetails(area, controller, action); if (!menuRes.IsSucceed) { context.Succeed(requirement); return; } var user = await _userManager.GetUserAsync(context.User); if (user == null) { return; } var roles = await _userManager.GetRolesAsync(user); var result = _roleMenuService.HasAccessToMenu(menuRes.Data.Id, roles); if (result.IsSucceed) { context.Succeed(requirement); } }