在一个Query镜头asp.net Core中删除roleClaims

时间:2017-03-06 10:02:12

标签: asp.net asp.net-core role-manager

我使用asp.net核心 RoleManager 来执行基于roleClaim(权限)的授权。下面的代码工作正常,但执行需要太多时间,因为我一次删除每个roleclaim。但我想在一次删除查询中删除roleclaims(权限),任何人都可以帮助我吗?提前谢谢。

//我的控制器代码

   public async Task<IActionResult> SaveRolePermission([FromBody] RoleClaimVM model)
        {
            try
            {
                if (string.IsNullOrEmpty(model.RoleId) || model.ClaimValues.Length <= 0) return Json(new { status = false });
                var role = await _roleManager.FindByIdAsync(model.RoleId);
                if (role == null) return null;
                var roleClaims = _roleManager.GetClaimsAsync(role).Result.ToList();
                if (roleClaims.Any())
                {
                    foreach (var item in roleClaims)
                    {
                        await _roleManager.RemoveClaimAsync(role, item);
                    }
                }
                foreach (var item in model.ClaimValues)
                {
                    await _roleManager.AddClaimAsync(role, new Claim(CustomClaimtypes.Permission, item.ToLower()));
                }
                return Json(new { status = true });
            }
            catch (Exception)
            {
                return Json(new { status = false });
            }
        }

0 个答案:

没有答案