Verwenden die meisten Leute .NET SqlMembershipProvider, SqlRoleProvider und SqlProfileProvider?

8

Verwenden die meisten Leute .NET SqlMembershipProvider, SqlRoleProvider und SqlProfileProvider beim Entwickeln einer Site mit Mitgliedschaftsfunktionen?

Oder machen viele Leute ihre eigenen Anbieter oder sogar ihre eigenen Mitgliedschaftssysteme?

Was sind die Einschränkungen der SQL-Anbieter, die Sie Ihre eigenen rollen lassen?

Ist es einfach, die SQL-Anbieter zu erweitern, um zusätzliche Funktionen bereitzustellen?

Als Referenz
Blog von Per Scott Gu , Microsoft stellt den Quellcode für den SqlMembershipProvider bereit , damit Sie es anpassen können, anstatt von vorne anzufangen. Nur ein FYI.

    
John Bubriski 25.06.2009, 14:31
quelle

7 Antworten

6

Wir verwenden alles außer dem Profilanbieter. Der Profilanbieter ist vollständig textbasiert und bietet Volltext-Suchanfragen - dies wird extrem langsam, wenn die Benutzerbasis größer wird. Wir haben festgestellt, dass es eine viel bessere Lösung ist, den eigenen Profilabschnitt der Mitgliedschafts-API-Datenbank zu verwenden, die für die Benutzer-ID in der Mitgliedschaft kodiert ist.

    
Jim Evans 25.06.2009, 15:18
quelle
2

Ich habe meine eigenen MembershipProvider -Klassen mithilfe von abgeleiteten MembershipUser -Typen gerollt, um das benutzerdefinierte Benutzerschema zu umbrechen, sodass profilgestützte Eigenschaften nun überall als Teil des abgeleiteten Benutzers über eine Umwandlung verfügbar sind.

    
devstuff 25.06.2009 14:56
quelle
1

Normalerweise verwende ich die Anbieter, die aus der Box kommen, das Hauptproblem, das ich habe, ist quer über Profilattribute über Benutzer hinweg abzufragen. Zum Beispiel das Auffinden aller Benutzer, die ein Profilattribut namens Car haben, das gleich wahr ist. Dies ist darauf zurückzuführen, wie sie in der zugrunde liegenden Struktur gespeichert sind.

    
RubbleFord 25.06.2009 14:38
quelle
1

Ich habe SqlMembership schon einmal benutzt und es ist ganz nett, außer du brauchst etwas Brauchbares. Ich erinnere mich, dass ich etwas wie Vornamen und Nachnamen brauchte, und mir wurde klar, dass es dafür keine Felder gab. Am Ende habe ich das Feld "Kommentar" des Anbieters verwendet und dort die Nameninformationen hinzugefügt. Dies ist wahrscheinlich eine schlechte Praxis / faul / Hack-Art, aber es funktionierte für mich in einer knappen Situation.

    
dstr 25.06.2009 15:04
quelle
0

Theoretisch klingen sie nett, aber keine Chance, wenn Sie Unit-Tests durchführen, ohne viele abstrakte Wrapper zu erstellen.

    
mxmissile 25.06.2009 14:45
quelle
0

Wenn Sie nur die grundlegende Benutzerunterstützung benötigen (Rollen, Profile, etc.), dann werden die Standardanbieter großartig funktionieren.

Wenn Sie mehr benutzerdefinierte Unterstützung benötigen (Datenspeicher in einer Datenbank, die nicht von den Standardanbietern [wie Oracle] unterstützt wird, Provider für eine bereits vorhandene Datenbank, ein stark angepasstes Schema), sollten Sie Ihre eigenen Anbieter rollen.

>

Was mich betrifft, brauchte meine aktuelle Site nur grundlegende Unterstützung von Rollen (und minimale Profile-Unterstützung), also ging ich mit den Standardanbietern.

    
Matthew Jones 25.06.2009 14:45
quelle
0

Ich habe sowohl die benutzerdefinierten Klassen als auch die integrierten Klassen verwendet. Wenn Sie eine andere Datenbank oder ein anderes Schema benötigen oder zusätzliche Informationen benötigen,

Ich habe die Layer abstrahiert, so dass sie auf der Logikebene funktionieren und eine DAL-Schicht haben, die das dat.common.dbprovider-Bit verwendet hat, so dass es ziemlich generisch war.

    
Jon 25.06.2009 19:06
quelle