Я согласен с чувствами Айенде по этому поводу :
Это огромный API, он делает много предположений, и с ним действительно не приятно работать с точки зрения того, что он дает вам и что вы должны реализовать
Это тоже мой опыт. Каждый раз, когда я внедрял своего собственного поставщика членства (дважды на момент написания этой статьи), я оставлял подавляющее большинство переопределенных методов невыполненными, потому что я никогда не собирался вызывать их и не использовал ни одну из веб-форм. элементы управления, которые их используют.
Поставщики Sql и Active Directory хороши, если они отвечают всем вашим потребностям. Но если они этого не делают, а вы думаете о внедрении поставщиков, возможно, для вас найдется лучший способ.
Не путайте MembershipProvider с FormsAuthentication , на которую я до сих пор регулярно полагаюсь в своих приложениях. Это механизм, который заботится о том, чтобы обернуть маркер аутентификации пользователя в файл cookie и передать его между клиентом и сервером. Насколько я знаю, в FormsAuthentication нет ничего плохого, и я бы не стал изобретать его заново.
Если вы не хотите реализовывать десятки методов MembershipProvider , RoleProviderMethods и ProfileProvider , тогда просто реализуйте IPrincipal и IIdentity и просто делай то, что тебе нужно. Вот пример того, как заставить эти два интерфейса работать с FormsAuthentication, что тривиально.
Кроме того, имейте в виду, что вам нужно уметь хранить учетные данные своих пользователей. SqlMembershipProvider делает может по крайней мере хранить хэшированные соленые пароли. Будьте уверены, что вы, по крайней мере, делаете то же самое. Вот хороший кусок кода , чтобы помочь с этим. Обратите внимание на используемый алгоритм медленного хеширования . Не принимай наркотики.
обновление (2013-12-16)
С тех пор, как я написал это, в ASP.net все изменилось. ASP.NET Identity заменяет функции членства ранее.
Я рекомендую использовать новый материал, потому что:
- Вы можете реализовать различные интерфейсы для составления решения, отвечающего вашим потребностям. Это означает, что вы можете реализовать те части, которые вам нужны, и игнорировать те, которые вам не нужны.
- Вы можете полностью изменить место и способ хранения идентификационных данных, сохранив реализацию по умолчанию, управляющую тем, как хешируются пароли.
- Функции OAuth и OpenID.
- Вы можете использовать ту же систему в любом фреймворке, построенном на OWIN.
API немного сложнее, чем раньше, но более гибок.