Проблема в том, что вы материализуете запрос, используя свой метод FilterBySearchTerm
. EF не может преобразовать случайные методы в SQL, поэтому он должен пойти дальше и выполнить запрос, получить результаты обратно, а затем применить ваш Where
. EF фактически выкинул бы исключение в прошлом, но EF Core обрабатывает это молча.
В любом случае, как только запрос будет выполнен, все готово. Ваша фильтрация происходит в памяти, и в этот момент без Include
ваши связанные сущности не будут там работать. Короче говоря, вам нужно будет создать свой фильтр на месте (а не использовать отдельный метод), чтобы EF смог преобразовать его в SQL.
Альтернативный подход, который может помочь вам лучше, - передать запрос в ваш метод FilterBySearchTerm
. Например, вместо того, чтобы делать:
query = query.Where(c => FilterBySearchTerm(c, searchTerm));
Делать
query = FilterBySearchTerm(query, searchTerm);
Затем внутри FilterBySearchTerm
вы можете напрямую применять предложения Where
к переданному в запросе. Это позволяет вам создавать фактический запрос, который EF может понять, и в то же время инкапсулировать логику.
Здесь - исследовательская статья по политике паролей. В нем упоминается частота, с которой люди должны менять свои пароли, и некоторые другие действительно интересные вещи. Ниже приводится выдержка.
Некоторые эксперты говорят, что периодические смена пароля уменьшит повреждение, если злоумышленник перехватывает пароль: как только пароль изменено, злоумышленник заблокирован. Это предполагает, что восстановленный пароль не даст злоумышленнику любые намеки о текущей жертве пароль. На самом деле, периодический пароль изменения, как правило, побуждают людей дизайн последовательности паролей, как secret01a, secret01b, secret01c и и т. д.
Это позволяет пользователям легко выбирать и помните новый пароль, когда старый один истекает. Такие последовательности обычно довольно очевидно для атакующего, так что любой из старых жертв пароли, вероятно, обеспечат злоумышленник с относительно небольшим количество паролей, которые нужно угадать.
В TechReport Сильные веб-пароли что-нибудь достигают? заявляет «меняется» пароль часто помогает, только если злоумышленник слишком медленно использует собранные учетные данные ».
На мой взгляд, принуждение людей слишком часто менять свой пароль уменьшает безопасность, потому что единственный способ, которым люди могут запомнить столько паролей, - это начать использовать глупые пароли, такие как Computer123 или January1, а затем февраль1 и т. д.
Лучшая идея - уменьшить частоту, а затем обучать людей, как создавать надежные пароли.
Я не знаю ни одного исследования, которое существует, но чтобы вы подумали об обеих сторонах проблемы, вот документ против принудительной смены пароля:
Управление безопасностью сети - Часть 10. Изменение пароля
И учебный сайт для учебного заведения, в котором приводится хотя бы несколько убедительных аргументов (написано доктором философии) для принудительной пользователи часто меняют свои пароли. Вот основные аргументы, которые сайт приводит для принудительного изменения пароля после ссылки на страницу:
«Почему я должен сменить мой ! @ $% # * Пароль?»
Что касается «исследований», то они могут не обрезать его, но, по-видимому, являются, по крайней мере, хорошим введением в обе стороны аргумента.
Хотя не совсем исследование, которое вы ищете, оно тесно связано и может подтолкнуть Вы в правильном направлении. Я видел несколько исследований по конкретной теме, которую вы ищете, но пока не могу найти ссылки.
Совет Microsoft Security Guru: «Запишите свой пароль»
Есть ряд плохих вещей это может произойти с паролями, и вы хотите уменьшить их как можно больше, не создавая новых проблем. Политика «изменить ваш пароль» предназначена для того, чтобы уменьшить ущерб, который может быть причинен при выходе вашего пароля, путем ограничения окна возможностей для злоумышленника. Хотя это еще не все меры безопасности, иногда это может иметь огромное значение. Как консультант по безопасности, Я лично сделал (только в этом году) много десятков тысяч долларов, чтобы убрать беспорядки, которых можно было бы полностью избежать, если бы компания меняла важные пароли хотя бы раз в год.
Опасность частого изменения пароля состоит в том, что вы будете выбирать плохие пароли. Это делает ситуацию еще хуже, потому что теперь она допускает атаки, которые в противном случае были бы невозможны.
Новая мудрость, как упомянуто в связанной статье, заключается в выборе (или назначении) случайного пароля, который может быть изменен на обычном основы, и запишите это где-нибудь, что вы сохраните. Очевидно, вы не оставляете его на своем компьютере больше, чем оставляете ключи от машины. Оправдание состоит в том, что люди уже обучены, чтобы знать, как обезопасить «вещи», но, естественно, слабы в защите информации. Поэтому, если вы превратите пароль в вещь, которую сможете удерживать, то вы можете просто защитить ее так же, как и свои ключи. На практике это работает очень хорошо, но, как правило, нервирует ИТ-отделы.
Это не исследование, но Джин Спаффорд опубликовал небольшую статью, в которой обсуждаются причины, по которым политика частых смен паролей не Не имеет большого смысла: