Hi zusammen,
ich habe eine bereits existierende Datenbank mit einer User-Table.
Nun möchte ich den CreateNewUserWizard und ein Login-Feld mit der Datenbank verbinden. Standardmäßig verwendet ASP.NET ja so eine interne Datenbank.
Wie kann ich das nun mit meiner externen Datenbank verbinden? Muss ich dafür einige Methoden der WebForm-Elemente überschreiben? Also z.B. so Events wie LoginButton_Click?
Oder muss ich so einen eigenen Membership Provider bauen?
Ich habe bereits etwas Doku der MSDN gelesen, aber komme nicht wirklich weiter.
Wofür ist denn überhaupt dieser Membership Provider? Verstehe ich das richtig, dass ich hier einfach einen Provider speziell für meine Datenbank baue, den ich dann überall wiederverwenden kann?
Gruß
Mike
Hallo Mike,
wenn ich dich richtig verstehe willst du die fertigen Controls zum Login, User Anlegen... von ASP.NET 2.0 verwenden.
Willst du nicht den Standard-Membership-Provider verwenden der mit einer MS SQL Server 2005 Express Datenbank arbeitet die er selbstständig anlegt musst du einen eingenen Membership Provider anlegen.
Dieser erbt von einem Interface und implementiert dann Methoden wie CreateUser und ähnliches
Wofür ist denn überhaupt dieser Membership Provider? Verstehe ich das richtig, dass ich hier einfach einen Provider speziell für meine Datenbank baue, den ich dann überall wiederverwenden kann?
Ja so ist das zu verstehen.
ciao Anke
Wenn Du als externe DB den SQL-Server oder eine andere DB verwendest, für die es bereits vorhandene Provider gibt, ist das kein Problem, da Du lediglich den ConnectionString des Providers ändern müsstest.
Ein MembershipProvider ist eine generalisierte Schnittstelle, über die ASP.NET mit verschiedenen Arten von DataStores kommunizieren kann. Verwendest Du einen speziellen DB-Typen, wirst Du Dir wahrscheinlich einen eigenen Provider schreiben müssen.
Grüsse
Cord
Hi,
und wie erfahre ich, wie die Tabellenspalten heißen müssen, damit der Provider mit meiner Tabelle klarkommt? Oder muss ich die vielleicht gar nicht umbenennen, sondern kann irgendwo festlegen, wie die Spalten bei mir heißen?
Gruß
Mike
Klar kannst Du die Cols benennen, wie du willst.
Für die korrekte Zuordnung ist dann ja Dein Provider zuständig, der wissen muss, welches Feld beispielsweise den Username und welches die Emailadresse beinhaltet.
Grüsse
cord
Hi,
naja mir gings mehr darum den vorhandenen Provider von Microsoft direkt zu verwenden und dort nur die Spaltennamen umzubenennen. Oder geht das nicht, so dass ich in jedem Fall einen eigenen Provider schreiben muss, wenn ich eine eigene Tabelle habe?
Gruß
Mike
Soweit ich weiß musst du wirklich einen eigenen Provider schreiben wenn du eine eigene DB verwenden willst.
ciao Anke
Du kannst doch auch den vorhanden Provider erweitern ( davon ableiten ) und in den Methoden für LogIn ( weiß nicht genau ob die so heißen ) implementierst Du Deine zusätzlichen Anforderungen. So habe ich dies auch mal umgesetzt.
Nein, es ist definitiv nicht möglich, z. B. dem SqlMembershipProvider anders lautende Tabellenstrukturen zu übergeben. Es werden ja auch der Spaltentyp und deren Grösse verwaltet.
Du musst in diesem Fall einen eigenen Provider schreiben.
Wenn Du das tun solltest, würdest Du sicher keinen schlechten dienst leisten, wenn Du einen Provider schriebest, der solcherlei Möglichkeiten beinhaltet, so dass eine vorhandene Tabelle möglicherweise für den Provider verwendet werden kann.
Grüsse
Cord