Фильтрация результатов автозапроса для отображения только тех строк таблицы, которые соответствуют данным в сеансе пользователей

Я работаю над проектом, который хочет контролировать доступ к данным в многопользовательской системе. У меня есть настроенная таблица, в которой есть строка, в которой указано, к какому арендатору относится объект. Назовем это свойство

      ClientObject.ClientOrgId

Я хочу настроить что-то так, чтобы каждый раз, когда к этой таблице обращаются, единственными возвращаемыми результатами были результаты, которые соответствуют некоторой части данных в сеансе пользователей. то есть

      ClientObject.ClientOrgId == UserSession.ClientOrgId

и в идеале я хочу сделать это ограничение для табличной модели, а не повторно реализовать его для каждого созданного запроса.

Я нашел атрибут Autofilter в документации по сервисному стеку, и похоже, что я хочу его использовать, но мне не удалось заставить его работать. Пример моего кода приведен ниже, и я не вижу никакой фильтрации всякий раз, когда я устанавливаю сеансы пользователей ClientOrgID на что-то другое.

      [Authenticate]
[Route("/clientObject", HttpMethods.Post)]
[Api("Creates a Client Object")]
public class CreateClientObject : ICreateDb<ClientObjectTableModel>, IReturn<ClientObjectMutationResponse>
{
    [ValidateNotEmpty]
    public string ClientName{ get; set; }

    [ValidateNotEmpty]
    public string ClientLocation { get; set; }

    [ValidateNotEmpty]
    [ValidateNotNull]
    public Guid? ClientOrgId { get; set; }
}

[AutoFilter(QueryTerm.Ensure, nameof(ClientObjectTableModel.ClientOrgId), Eval= "userSession.ClientOrgId")]
public class ClientObjectTableModel : AuditBase
{
    [AutoId]
    public Guid Id { get; set; }

    [Required]
    public string ClientName { get; set; }

    [Required]
    public string ClientLocation { get; set; }

    [Required]
    public Guid ClientOrgId { get; set; }
}

Я даже сошел с ума и попробовал что-то вроде

      [AutoFilter(QueryTerm.Ensure, nameof(ClientObjectTableModel.ClientLocation), Value = "The Fourth Moon Of Mars")]

с ожиданием, что ничего не вернется, и все же я все еще вижу результаты.

0 ответов