Показывать неправильный ответ при использовании метода Except в ASP.NET Core - PullRequest
0 голосов
/ 02 июня 2019

Я хочу создать динамическое разрешение.

Информация отправляется со стороны клиента и оценивается в действии, если каждое из действий, содержащихся в списке, отправленном как от клиента, так и из базы данных, игнорируется и удаляется из списка.

Клиент отправляет как эта информация:

0:
 Actions: Array(4)
 0: {ActionId: 100663387}
 1: {ActionId: 100663388}
 2: {ActionId: 100663389}
 3: {ActionId: 100663390}
 controllerID: "35ba32ce-f980-3b9d-a38b-3ca854dcb063"
 roleId: 1004
1:
 Actions: Array(2)
 0: {ActionId: 100663395}
 1: {ActionId: 100663395}
 controllerID: "9a722402-cc69-3ad0-a24e-f1f166a46880"
 roleId: 1004

и в ASP.NET Core:

[HttpPost("[action]")]
public async void AddClaim(List<RecAccessLevel> model, CancellationToken cancellationToken)
{
        foreach (var item in model)
        {
            var CurrentActions = roleClaimService.TableAsNoTracking
                .Where(x => x.RoleId == item.RoleId && x.ControllerId == item.ControllerID)
                .Select(r => new Action
                {
                    ActionId = r.ActionId
                }).ToList();

            var newActionToAdd = item.Actions.Except(CurrentActions).ToList();

            foreach (var itemAdd in newActionToAdd)
            {
                await roleClaimService.AddAsync(new RoleClaim
                {
                    ActionId = itemAdd.ActionId,
                    ControllerId = item.ControllerID,
                    RoleId = item.RoleId,
                    ClaimType = "DynamicPemission",
                    ClaimValue = string.Format($"{item.RoleId}:{item.ControllerID}:{itemAdd.ActionId}")
                }, cancellationToken);
            }
        }
}

Проблема в том, что когда я использую метод, он не игнорирует сопоставленные данные

public class RecAccessLevel
{
    public string ControllerID { get; set; }
    public int RoleId { get; set; }
    public IEnumerable<Action> Actions { get; set; }
}

public class Action
{
    public int ActionId { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...