Должен ли FindUsersByName включать частичные совпадения? - PullRequest
1 голос
/ 16 сентября 2009

Документация MSDN не точна в этом вопросе.

В одном месте говорится: «Получает коллекцию пользователей, в которых имя пользователя содержит указанное имя пользователя для сопоставления.»

Позже он говорит: «FindUsersByName возвращает список пользователей членства, в которых имя пользователя соответствует предоставленному имени пользователя toMatch для настроенного имени приложения.»

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

Редактировать: Я действительно спрашиваю больше о намерениях поставщика членства, а не о том, что я должен делать в моей конкретной ситуации.

Ответы [ 3 ]

3 голосов
/ 16 сентября 2009

Это предложение в документации объясняет это:

The SqlMembershipProvider performs its search using a LIKE clause against the usernameToMatch parameter. Any wildcards that are supported by SQL Server in LIKE clauses can be used in the usernameToMatch parameter value.

SO

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

является точным предложением, если вы ищете «DAV *», вы должны получить «Dave», «David», «Davis» и т. Д.

3 голосов
/ 21 января 2010

Функция FindUsersByName сопоставляет строку, которую вы передаете.

Если вы хотите выполнить частичное совпадение, вам нужно добавить «%» в конец искомой строки.

0 голосов
/ 16 сентября 2009

Давайте сделаем это более ограничительным (найти точное совпадение), чтобы убедиться, что пользователь 'joe' не имеет доступа к данным пользователя 'joel':)

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

EDIT: Теперь проверьте еще раз метод MSDN, с которым вы связались, и он называется FindUsersByName (пользователи, а не пользователь), чтобы метод мог возвращать более одного пользователя. В этом случае я предполагаю, что вы должны реализовать код для возврата всех совпадений. Если метод будет FindUserByName , то ответ будет противоположным (для этого у вас есть метод GetUser )

...