Как ограничить данные только для вошедшего в систему пользователя в Entity Framework Core Identity легко - PullRequest
0 голосов
/ 08 февраля 2019

Я использую Entity Framework Core Identity.Все мои сущности имеют свойство под названием CreatedBy, внешний ключ для встроенной таблицы Identity User.В моем API есть конечная точка GetAll(), которая возвращает все записи из таблиц, связанных с этими объектами.Я хочу, чтобы этот GetAll() возвращал только записи, созданные текущим вошедшим пользователем.Я могу получить UserId из HttpContext, но мне было интересно, смогу ли я автоматически ограничить записи.

Например, я могу выполнить подобное действие, чтобы получить такое поведение:

return _context.Entities.Where(e => e.UserId == userIdFromHttpContext).ToList()

Однако это дополнительное условие, которое я должен был бы вставить в каждое предложение Where в каждом будущем методе Get, который я бы написал.Это очень избыточно для меня.

Я хотел бы просто позвонить

return _context.Entities.ToList()

, что автоматически отфильтровывает все записи, не связанные с текущим вошедшим пользователем.

Могу ли я что-нибудь сделать, чтобы настроить какое-то «автоматическое» предопределенное условие where в DbContext, которое применяется ко всем таблицам в контексте, только один раз?Предпочтительно я хотел бы добавить HttpContext в DbContex t (я знаю, что это можно сделать) и настроить это поведение в методе OnConfiguring() там.

edit: я бы хотелпо возможности избегайте обертки вокруг класса вокруг контекста.Это приложение работает над студентами колледжа, и я хотел бы, чтобы они использовали "ванильные" Entity Framework соглашения для сбора данных, а не работали с какой-то пользовательской реализацией

1 Ответ

0 голосов
/ 09 февраля 2019

вы можете использовать глобальный фильтр запросов (подробнее здесь ) В двух словах, вы можете указать Where во время вызова OnModelCreating, и он будет применяться каждый раз, когда вы пытаетесь получить доступ к этой коллекции сущностей..

...