sql >> Database >  >> RDS >> Sqlserver

MVC 4 SimpleMembership gebruiken met een bestaand database-first EF-model

Puur als referentiepunt kan het een goed idee zijn om een ​​nieuwe internettoepassingssjabloon van een ASP.NET MVC 4-webtoepassingsproject te maken (d.w.z. via Bestand> Nieuw project).

Als je kijkt naar de AccountController , zoals @zms6445 zegt, is het versierd met een InitializeSimpleMembership attribuut. U kunt de implementatie van dit kenmerk vinden in het bestand InitializeSimpleMembershipAttribute.cs in de map Filters in de hoofdmap.

Hier is dit het ontbrekende deel van de puzzel - je moet je bestaande database aansluiten zodat deze wordt gebruikt door de SimpleMembershipProvider . Dit is de code die je nodig hebt:

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);
        }
    }
}

Enkele dingen om op te merken:

  1. CONNECTION_STRING_NAME is een item in uw web.config ConnectionStrings - u kunt hier NIET de modelverbindingsreeks gebruiken - de SimpleMembershipProvider herkent dat formaat niet! U moet een System.Data.SqlClient . opgeven verbindingsreeks, b.v.

  2. USER_TABLE is de tabel in uw database om extra gebruikersinformatie te bevatten, zoals voornaam, achternaam etc. Deze is gekoppeld aan de automatisch gegenereerde tabellen via het USER_ID_FIELD.

  3. USER_ID_FIELD is meestal de primaire sleutel van uw tabel Gebruikers. Het moet van het type int . zijn .

  4. USER_ID_NAME is een unieke naam voor de gebruiker, wat een e-mailadres kan zijn.

  5. autoCreateTables is ingesteld op true om ervoor te zorgen dat de tabellen die nodig zijn om SimpleMembership te laten werken, worden gemaakt als ze nog niet bestaan.

Deze code wordt natuurlijk alleen geactiveerd als je een pagina bereikt via de AccountController , aangezien dit is versierd met het attribuut. Je zou daar een breekpunt kunnen plaatsen en het in actie zien.

Dit zou u op weg moeten helpen - de internettoepassingssjabloon is een redelijk goede sjabloon om te volgen als u vastloopt.

Ik hoop dat dit helpt.



  1. null-waarde uitzondering bij het invoeren van de database

  2. Waarschuwing:mysqli_stmt::bind_param():het aantal variabelen komt niet overeen met het aantal parameters in de voorbereide instructie

  3. Update varbinary(MAX) veld in SQLServer 2012 Lost Last 4 bits

  4. Singleton-patroon voor gegevenscontext