2009-10-15 2 views
0

Мы поражая большое количество стена и камни преткновения, как мы создаем наше пользовательское членство основаны на MembershipProvider, MembershipUser и RoleProvider т.д.ASP.NET сайт членство

У нас есть ряд интересных требований и поставщик членства Безразлично По-видимому, нам очень помогает в их достижении:

  • Пользователи могут иметь несколько логинов.
  • Пользователи не имеют имени пользователя напрямую (но могут иметь логин, имеющий имя пользователя).
  • У пользователей есть одна уникальная ссылка (в настоящее время первичный ключ с автоматическим добавлением).

Чтобы реализовать это, у нас есть две таблицы: пользователи, которые имеют отношения «один-много» с логинами.

Это означает, что у нас есть Пользователь, который (в гипотетическом мире) может войти в систему через свою учетную запись Active Directory автоматически (по возможности) и с помощью комбинации OpenID или Username/Password. У нас также есть некоторые пользователи, у которых может не быть учетной записи AD.

я первоначально пытался перепрофилирование классы членства путем создания: - CustomMembershipProvider - CustomMembershipUser - CustomRolesProvider

Но все мои бои против него только что дал мне черные глаза и синяки, это действительно, действительно хочет имя пользователя!

Неужели я пошла по этому пути? Должен ли я начинать с страйка и ничего не наследовать? Должен ли я основывать его на классе IProvider? Или, может быть, классы GenericPrincipal и GenericIdentity? Или я просто пропустил что-то с MembershipProvider?

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

Membership.GetCurrentUser(); 

И избежать меньше, чем упрощенный опыта конца кодировщиков ...

ответ

0

У меня был подобный опыт и решил дать всем пользователям общее членство для проверки роли, и т.д., и сопоставить его differenct AuthenticationProviders (OpenID , AD, Membership Providers и т. Д.), Чтобы их можно было аутентифицировать по-разному.

+0

Как вы имеете в виду, что у вас было общее членство, но с разными поставщиками? Это похоже на то, что я хочу достичь, но требование, безусловно, не должно определять несколько ролей и поставщиков профилей для того, что фактически остается только одним пользователем. Имеет ли это смысл? – Amadiere

+0

У каждого пользователя должен быть профиль Memebrship, иначе он не может быть разрешен Ролями. Но этот профиль относится к поставщикам аутентификации (один к многим), поэтому пользователь может войти в систему по-разному. Ссылка Provider Provider является ссылкой на профиль (это тот же провайдер). – twk

Смежные вопросы