Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden von MVC 4 SimpleMembership mit einem vorhandenen Database-First-EF-Modell

Rein als Referenzpunkt kann es eine gute Idee sein, eine neue Internetanwendungsvorlage eines ASP.NET MVC 4-Webanwendungsprojekts zu erstellen (z. B. über Datei> Neues Projekt).

Wenn Sie sich den AccountController ansehen , wie @zms6445 sagt, ist es mit einem InitializeSimpleMembership verziert Attribut. Die Implementierung dieses Attributs finden Sie in der Datei „InitializeSimpleMembershipAttribute.cs“ im Ordner „Filters“ im Stammverzeichnis.

Das hier ist der fehlende Teil des Puzzles – Sie müssen Ihre vorhandene Datenbank verbinden, damit sie vom SimpleMembershipProvider verwendet wird . Dies ist der Code, den Sie benötigen:

private class SimpleMembershipInitializer
{
    public SimpleMembershipInitializer()
    {
        try
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("CONNECTION_STRING_NAME", "USER_TABLE", "USER_ID_FIELD", "USER_NAME_FIELD", autoCreateTables: true);
            }
        }
        catch (Exception ex)
        {
            throw new InvalidOperationException("Something is wrong", ex);
        }
    }
}

Einige Dinge zu beachten:

  1. CONNECTION_STRING_NAME ist ein Eintrag in Ihren web.config ConnectionStrings - Sie können hier NICHT die Modell-Verbindungszeichenfolge verwenden - der SimpleMembershipProvider erkennt dieses Format nicht! Sie müssen einen System.Data.SqlClient angeben Verbindungszeichenfolge, z.

  2. USER_TABLE ist die Tabelle in Ihrer Datenbank, in der zusätzliche Benutzerinformationen wie Vorname, Nachname usw. gespeichert werden. Diese wird über das USER_ID_FIELD mit den automatisch generierten Tabellen verknüpft.

  3. USER_ID_FIELD ist normalerweise der Primärschlüssel Ihrer Users-Tabelle. Es muss vom Typ int sein .

  4. USER_ID_NAME ist ein eindeutiger Name für den Benutzer, der eine E-Mail-Adresse sein könnte.

  5. autoCreateTables auf true gesetzt ist um sicherzustellen, dass die für das Funktionieren der SimpleMembership erforderlichen Tabellen erstellt werden, falls sie noch nicht vorhanden sind.

Natürlich wird dieser Code nur ausgelöst, wenn Sie über den AccountController auf eine Seite gelangen , da diese durch das Attribut dekoriert wurde. Sie könnten dort einen Haltepunkt einfügen und es in Aktion sehen.

Dies sollte Ihnen den Einstieg erleichtern - die Internetanwendungsvorlage ist eine ziemlich gute Vorlage, der Sie folgen können, wenn Sie nicht weiterkommen.

Hoffe das hilft.