Rent som en referenspunkt kan det vara en bra idé att skapa en ny Internetapplikationsmall för ett ASP.NET MVC 4-webbapplikationsprojekt (dvs via Arkiv> Nytt projekt).
Om du tittar på AccountController
, som @zms6445 säger, den är dekorerad med en InitializeSimpleMembership
attribut. Du kan hitta implementeringen av detta attribut i filen InitializeSimpleMembershipAttribute.cs i mappen Filters i rotkatalogen.
Här är det här den saknade delen av pusslet - du måste koppla upp din befintliga databas så att den används av SimpleMembershipProvider
. Det här är koden du behöver:
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);
}
}
}
Några saker att notera:
-
CONNECTION_STRING_NAME
är en post i din web.config ConnectionStrings - du KAN INTE använda modellanslutningssträngen här -SimpleMembershipProvider
känner inte igen det formatet! Du måste ange enSystem.Data.SqlClient
anslutningssträng, t.ex. -
USER_TABLE
är tabellen i din databas som innehåller extra användarinformation, såsom förnamn, efternamn etc. Detta är länkat till de autogenererade tabellerna via USER_ID_FIELD. -
USER_ID_FIELD
är vanligtvis den primära nyckeln i tabellen Användare. Det måste vara av typenint
. -
USER_ID_NAME
är ett unikt namn för användaren, vilket kan vara en e-postadress. -
autoCreateTables
är inställd påtrue
för att säkerställa att de tabeller som krävs för att SimpleMembership ska fungera skapas om de inte redan finns.
Naturligtvis aktiveras den här koden bara om du träffar en sida via AccountController
, eftersom detta har dekorerats av attributet. Du kan lägga in en brytpunkt där och se den i aktion.
Detta bör få dig igång - mallen för Internetapplikationer är en ganska bra mall att följa om du fastnar.
Hoppas detta hjälper.