To dobre pytanie, z którym się zmagałem. Myślę, że istnieją trzy podstawowe podejścia;
Użyj dostawcy Profil - to sprawia, że łatwo dodać właściwości ale kłopotliwe robić takie rzeczy jak generowanie tabeli użytkowników, szczególnie jeśli trzeba stosować filtry/wyszukiwania. API po prostu tego nie wycina.
Dodaj nową tabelę (lub rozszerz istniejącą tabelę), a następnie dołącz do tej. Będziesz wtedy musiał napisać własne metody, aby odzyskać niestandardowe dane.
Napisz własnego dostawcę członkostwa, który rozszerza klasę MembershipProvider.
Na moim ostatnim projekcie użyłem drugie podejście - Napisałem bardzo quck SQL, które realizowane tylko najpotrzebniejsze rzeczy potrzebne do tworzenia użytkowników, uwierzytelniania oraz zmianę haseł. Dla reszty wirtualnych metod właśnie rzuciłem NotImplementedException
.
Dodałem następnie nową klasę, która dodała dodatkowe właściwości, których potrzebowałem i zrobiła to, aby można było utworzyć instancję, przechodząc w standardowym MembershipUser
. Coś takiego:
public static CustomMember GetMember(MembershipUser user)
{
// Get your custom member
}
ten sposób można użyć standardowego MembershipUser dla większości rzeczy, ale jeśli chcesz uzyskać więcej informacji na temat bieżącego użytkownika robisz rzeczy tak:
MembershipUser user = Membership.GetUser();
CustomMember member = CustomMember.GetMember(user);
ja być zainteresowanym, aby zobaczyć, jakie są podejścia innych ludzi.
Dzięki za odpowiedź. Podoba mi się twoje podejście. Jestem także ciekawy, co myślą inni. – Dkong
Nie jestem pewien, w jaki sposób "mieszasz i dopasowujesz" dostawców członkostwa, z pewnością CustomMember.GetMember() pobierze dane z jakiejś niestandardowej tabeli, podczas gdy Membership.GetUser() będzie działał na domyślnej tabeli asp_users? – greenimpala
Hej, dzięki za porady. Ale czy są jakieś artykuły lub najlepsze praktyki dotyczące wyboru tego podejścia? Byłbym wdzięczny za takie linki. –