Передайте дополнительный параметр в ValidateUser провайдера пользовательского членства () - PullRequest
3 голосов
/ 03 ноября 2011

У меня есть класс «Пользователь», который наследуется двумя другими классами (LocalUser и Donor).Я создал пользовательский поставщик членства для проверки подлинности форм ASP.net и переопределил метод ValidateUser ().В методе ValidateUser () моего пользовательского провайдера членства мне нужно передать параметр, чтобы узнать, является ли «Пользователь» для проверки «Локальным пользователем» или «Донором», и, соответственно, проверить пользователя по базе данных.Проблема в том, что ValidateUser () принимает только два параметра (имя пользователя и пароль).Таким образом, у меня нет возможности подтолкнуть другого.Одна вещь, которая пришла мне в голову, это установить переменную сеанса, но потом я искал более чистый подход.Есть предложения?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Просто создайте переопределенную версию вашего Validate метода, принимая 3 параметра и вызывайте его напрямую, как:

((MyCustomMembershipProvider)Membership.Provider).Validate( username, pass, anything );

Единственный недостаток такого подхода - вы больше не можете полагаться на автоматический вызовдвухпараметрической версии метода Validate, тогда и только тогда, когда откуда-то автоматически вызывается (например, из элемента управления asp:Login)

0 голосов
/ 03 ноября 2011

Вы можете отправить имя пользователя и тип пользователя в поле имени пользователя, а затем проанализировать его в методе ValidateUser? Вот так: username | userType. Конечно, вы должны запретить ввод разделителя в поле имени пользователя.

...