sql >> Database teknologi >  >> RDS >> Sqlserver

Brug af MVC 4 SimpleMembership med en eksisterende database-first EF-model

Rent som et referencepunkt kan det være en god idé at oprette en ny internetapplikationsskabelon til et ASP.NET MVC 4 webapplikationsprojekt (dvs. via Fil> Nyt projekt).

Hvis du ser på AccountController , som @zms6445 siger, er den dekoreret med en InitializeSimpleMembership attribut. Du kan finde implementeringen af ​​denne attribut i filen InitializeSimpleMembershipAttribute.cs i mappen Filtre i rodmappen.

Her er dette den manglende del af puslespillet - du skal tilslutte din eksisterende database, så den bruges af SimpleMembershipProvider . Dette er den kode du skal bruge:

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

Nogle ting at bemærke:

  1. CONNECTION_STRING_NAME er en post i din web.config ConnectionStrings - du KAN IKKE bruge modelforbindelsesstrengen her - SimpleMembershipProvider genkender ikke det format! Du skal angive en System.Data.SqlClient forbindelsesstreng, f.eks.

  2. USER_TABLE er tabellen i din database til at indeholde ekstra brugeroplysninger, såsom fornavn, efternavn osv. Dette er knyttet til de autogenererede tabeller via USER_ID_FIELD.

  3. USER_ID_FIELD er normalt den primære nøgle i din brugertabel. Det skal være af typen int .

  4. USER_ID_NAME er et unikt navn for brugeren, som kunne være en e-mailadresse.

  5. autoCreateTables er indstillet til true for at sikre, at de tabeller, der kræves for, at SimpleMembership fungerer, oprettes, hvis de ikke allerede eksisterer.

Denne kode bliver selvfølgelig kun udløst, hvis du rammer en side via AccountController , da dette er blevet dekoreret af attributten. Du kan sætte et brudpunkt derinde og se det i aktion.

Dette burde få dig i gang - Internet-applikationsskabelonen er en ret god skabelon at følge, hvis du går i stå.

Håber dette hjælper.



  1. Win7 MInGW QT MySQL-programskrig kan ikke finde -lqsqlmysqld; hvor er det manglende bibliotek?

  2. Adgang nægtet for brugeren "[e-mail beskyttet]" (ved hjælp af adgangskode:NEJ)

  3. Rake-opgave for at afkorte alle borde i Rails 3

  4. Forespørg på et mange-til-mange forhold ved hjælp af Doctrine med Symfony2