Фильтрация результатов автозапроса для отображения только тех строк таблицы, которые соответствуют данным в сеансе пользователей
Я работаю над проектом, который хочет контролировать доступ к данным в многопользовательской системе. У меня есть настроенная таблица, в которой есть строка, в которой указано, к какому арендатору относится объект. Назовем это свойство
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")]
с ожиданием, что ничего не вернется, и все же я все еще вижу результаты.