Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Sedan den här artikeln skrevs har ASP.NET medlemskapsleverantörer ersatts av ASP.NET identitet. Vi rekommenderar starkt att du uppdaterar appar så att de använder ASP.NET identitetsplattformen i stället för de medlemskapsleverantörer som presenterades när den här artikeln skrevs. ASP.NET Identity har ett antal fördelar jämfört med ASP.NET medlemskapssystemet, inklusive :
- Bättre prestanda
- Förbättrad utökningsbarhet och testbarhet
- Stöd för OAuth, OpenID Connect och tvåfaktorsautentisering
- Stöd för anspråksbaserad identitet
- Bättre samverkan med ASP.Net Core
WSAT (ASP.NET Website Administration Tool) innehåller ett webbaserat användargränssnitt för att konfigurera inställningar för medlemskap och roller och för att skapa, redigera och ta bort användare och roller. Tyvärr fungerar WSAT bara när den besöks från localhost, vilket innebär att du inte kan nå produktionswebbplatsens administrationsverktyg via webbläsaren. Den goda nyheten är att det finns lösningar som gör det möjligt att hantera användare och roller i produktion. I den här guiden tittar vi på de här lösningarna och andra.
Inledning
ASP.NET 2.0 introducerade ett antal programtjänster, som är en uppsättning byggblockstjänster som du kan lägga till i webbappen. Vi lade till tjänster för medlemskap och roller på webbplatsen bokrecensioner tidigare i självstudien Konfigurera en webbplats som använder Application Services. Medlemskapstjänsten underlättar skapandet och hanteringen av användarkonton. Rolltjänsten erbjuder ett API för att kategorisera användare i grupper. Webbplatsen Bokrecensioner har tre användarkonton – Scott, Jisun och Alice – och en enda roll, Administratör, med Scott och Jisun i administratörsrollen.
ASP. NET:s programtjänster är inte knutna till en specifik implementering. I stället instruerar du programtjänsterna att använda en viss provider och att providern implementerar tjänsten med hjälp av en viss teknik. Vi har konfigurerat webbappen Bokrecensioner för att använda leverantörerna SqlMembershipProvider och SqlRoleProvider för medlemskaps- och rolltjänsterna. Dessa två leverantörer lagrar användarkonto- och rollinformation i en SQL Server-databas och är de vanligaste leverantörerna för Internetbaserade webbprogram som finns på ett webbvärdföretag.
En vanlig utmaning för utvecklare som använder tjänsterna Medlemskap och roller är att hantera användare och roller i produktionsmiljön. Hur tar du bort ett användarkonto från produktionswebbplatsen, lägger till en ny roll eller lägger till en befintlig användare i en befintlig roll? Den här handledningen utforskar olika tekniker för att hantera användare och roller på produktionswebbplatsen.
Använda administrationsverktyget för ASP.NET webbplats
ASP.NET innehåller ett verktyg för webbplatsadministration (WSAT) som gör det enkelt att skapa och hantera användarkonton och roller och ange användar- och rollbaserade auktoriseringsregler. Om du vill använda WSAT klickar du på ikonen ASP.NET Konfiguration i Solution Explorer eller går till menyn Webbplats eller Projekt och väljer alternativet ASP.NET Konfiguration. Båda metoderna startar en webbläsare och navigerar till WSAT på en adress som: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication
WSAT är indelat i tre avsnitt:
- Säkerhet – hantera användare, roller och auktoriseringsregler.
- ApplicationConfiguration – hantera <appInställningar> och SMTP-inställningar härifrån. Du kan också göra applikationen otillgänglig och hantera felsöknings- och spårningsinställningar härifrån, samt ange standardsidan för anpassade felmeddelanden.
- ProviderConfiguration – konfigurera de leverantörer som används av programtjänsterna.
Avsnittet Säkerhet (visas i bild 1) innehåller länkar för att skapa nya användare, hantera användare, skapa och hantera roller samt skapa och hantera åtkomstregler. Härifrån kan du lägga till en ny roll i systemet, ta bort en befintlig användare eller lägga till eller ta bort roller från ett visst användarkonto.
Bild 1: Avsnittet WSAT-säkerhet innehåller alternativ för att hantera användare och roller
(Klicka om du vill visa en bild i full storlek)
Tyvärr är WSAT endast tillgängligt lokalt. Du kan inte besöka WSAT på fjärrproduktionswebbplatsen. om du besöker www.yoursite.com/asp.netwebadminfiles/default.aspx får du svaret 404 Hittades inte. Koden som driver WSAT använder Membership klasserna och Roles i .NET Framework för att skapa, redigera och ta bort användare och roller. Dessa klasser konsulterar webbprogrammets konfigurationsinformation för att avgöra vilken leverantör som ska användas. I den tidigare självstudien Konfigurera en webbplats som använder Application Services konfigurerade vi webbplatsen Bokrecensioner för att använda leverantörerna SqlMembershipProvider och SqlRoleProvider. Detta innebar att lägga till <membership> och <roleManager> avsnitt i Web.config.
<?xml version="1.0"?>
<configuration>
...
<connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />
<system.web>
...
<membership defaultProvider="ReviewMembership">
<providers>
<clear />
<add type="System.Web.Security.SqlMembershipProvider"
name="ReviewMembership"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="ReviewRole">
<providers>
<clear />
<add type="System.Web.Security.SqlRoleProvider"
name="ReviewRole"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</roleManager>
</system.web>
...
</configuration>
Observera att avsnitten <membership> och <roleManager> refererar till SqlMembershipProvider och SqlRoleProvider i sina type attribut. Dessa leverantörer lagrar användar- och rollinformationen i en angiven SQL Server-databas. Databasen som används av dessa leverantörer anges av connectionStringName attributet , ReviewsConnectionStringsom definieras i ~/ConfigSections/databaseConnectionStrings.config filen. Kom ihåg att databaseConnectionStrings.config filen i utvecklingsmiljön innehåller anslutningssträngen till utvecklingsdatabasen databaseConnectionStrings.config medan filen i produktion innehåller anslutningssträngen till produktionsdatabasen.
I ett nötskal måste WSAT nås lokalt via utvecklingsmiljön och fungerar med användar- och rollinformationen i databasen som anges i databaseConnectionStrings.config filen. Om vi ändrar informationen om anslutningssträngen databaseConnectionStrings.config i filen i utvecklingsmiljön kan vi därför använda WSAT lokalt för att hantera användare och roller i produktionsmiljön.
För att illustrera den här funktionen öppnar databaseConnectionStrings.config du filen i Visual Studio i utvecklingsmiljön och ersätter anslutningssträngen för utvecklingsdatabasen med anslutningssträngen för produktionsdatabasen. Starta sedan WSAT, gå till fliken Säkerhet och lägg till en ny användare med namnet Sam.
Bild 2 visar WSAT-skärmen när du skapar det här kontot.
Bild 2: Skapa en ny användare med namnet Sam i produktionsmiljön
(Klicka om du vill visa en bild i full storlek)
Eftersom vi ändrade anslutningssträngen till databaseConnectionStrings.config att peka på produktionsdatabasservern lades Sam till som användare i produktionsmiljön. Kontrollera detta genom att ändra anslutningssträngen databaseConnectionStrings.config i filen tillbaka till utvecklingsdatabasen och sedan gå till Login.aspx sidan i utvecklingsmiljön. Försök att logga in som Sam (se bild 3).
Bild 3: Du kan inte logga in som Sam i utvecklingsmiljön
(Klicka om du vill visa en bild i full storlek)
Du kan inte logga in som Sam i utvecklingsmiljön eftersom användarkontoinformationen inte finns i den lokala databasen. Läggs i stället till i produktionsdatabasen. Kontrollera detta genom att visa innehållet aspnet_Users i tabellen i både utvecklings- och produktionsdatabaserna. I utvecklingsmiljön bör det bara finnas tre poster för användarna Scott, Jisun och Alice. Dock har tabellen i produktionsdatabasen aspnet_Users fyra poster: Scott, Jisun, Alice och Sam. Därför kan Sam logga in via webbplatsen i produktion, men inte via utvecklingsmiljön.
Bild 4: Sam kan logga in på produktionswebbplatsen
(Klicka om du vill visa en bild i full storlek)
Anmärkning
Glöm inte att ändra anslutningssträngen databaseConnectionStrings.config i filen tillbaka till utvecklingsdatabasens anslutningssträng när du är klar med WSAT, annars kommer du att arbeta med produktionsdata när du testar platsen via utvecklingsmiljön. Tänk också på att även om tekniken vi just diskuterade gör att vi kan använda WSAT för att fjärrhantera användare och roller, så innebär ändringar i något av de andra WSAT-konfigurationsalternativen (såsom åtkomstregler, SMTP-inställningar, felsöknings- och spårningsinställningar och så vidare) att Web.config-filen modifieras. Därför gäller alla ändringar som görs i inställningarna för utvecklingsmiljön och inte för produktionsmiljön.
Skapa anpassade webbsidor för användar- och rollhantering
WSAT tillhandahåller ett system för hantering av användare och roller, men kan bara startas lokalt och kräver att du gör ändringar i informationen om anslutningssträngen för att hantera användare och roller i produktion. De flesta webbplatser som stöder användarkonton innehåller också ett antal webbsidor för användar- och rolladministration som gör det möjligt för administratörer att hantera användare och roller från sidor på webbplatsen. Sådana webbaserade administrationssidor gör det mycket enklare att hantera användare och roller och är viktiga för webbplatser där det kan finnas många administratörer eller administratörer som inte har åtkomst till eller den tekniska bakgrunden för att använda Visual Studio för att starta WSAT.
ASP.NET innehåller ett antal inbyggda inloggningsrelaterade webbkontroller som gör det enkelt att implementera många av dessa administrativa webbsidor som dra och släpp. Du kan till exempel skapa en sida för administratörer för att skapa ett nytt användarkonto genom att dra kontrollen CreateUserWizard till sidan och ange några egenskaper. Faktum är att sidan för att skapa användare i WSAT som visas i bild 2 använder samma CreateUserWizard-kontroll som du kan lägga till på dina sidor. Dessutom är funktionerna för medlemskap och roller tillgängliga programmatiskt via Membership klasserna och Roles i .NET Framework. Med dessa klasser kan du skriva kod för att skapa, redigera och ta bort användare och roller, samt lägga till eller ta bort användare i roller, för att avgöra vilka användare som finns i vilka roller och för att utföra andra användar- och rollrelaterade uppgifter.
I självstudien Konfigurera en webbplats som använder Application Services lade jag till en sida i Admin-mappen med namnet CreateAccount.aspx. På den här sidan kan en administratör lägga till ett nytt användarkonto på webbplatsen och ange om den nyligen skapade användaren är i administratörsrollen (se bild 5).
Bild 5: Administratörer kan skapa nya användarkonton
(Klicka om du vill visa en bild i full storlek)
För en mer detaljerad titt på hur du skapar användar- och rolladministrationssidor, tillsammans med stegvisa instruktioner om hur du använder Membership klasserna och Roles de inloggningsrelaterade ASP.NET webbkontroller, bör du läsa mina självstudier om webbplatssäkerhet. Där hittar du vägledning om hur du skapar webbsidor för att skapa nya konton, skapa och hantera roller, tilldela användare till roller och andra vanliga administrativa uppgifter.
För att implementera WSAT-liknande funktioner på produktionswebbplatsen kan du alltid skapa en egen serie webbsidor som implementerar WSAT:s funktioner. För att komma igång kan du kolla in WSAT-källkoden, som finns i mappen %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles. Ett annat alternativ är att använda Dan Clems WSAT-alternativ, som han delar i sin artikel, Rolling Your Own Web Site Administration Tool. Dan vägleder läsarna genom processen att skapa ett anpassat WSAT-liknande verktyg, innehåller sitt programs källkod för nedladdning (i C#) och ger stegvisa instruktioner för att lägga till sin anpassade WSAT på en värdbaserad webbplats.
Sammanfattning
Det ASP.NET verktyget för webbplatsadministration (WSAT) kan användas tillsammans med programtjänsterna Medlemskap och Roller för att hantera användar- och rollinformation för din webbplats. Tyvärr är WSAT endast tillgänglig lokalt och kan inte besökas från din produktionswebbplats. Men genom att ändra anslutningssträngen i utvecklingsmiljön så att den pekar på produktionsdatabasen kan du använda WSAT för att hantera användare och roller på produktionswebbplatsen.
WSAT-metoden ger ett snabbt och enkelt sätt att hantera användare och roller, men det kräver att WSAT startas från Visual Studio samt tillfälliga ändringar av informationen om anslutningssträngen. WSAT erbjuder ett snabbt sätt att hantera användare och roller i produktion, men är besvärligt och fungerar inte bra för webbplatser med flera administratörer eller med administratörer som inte har eller inte är bekanta med Visual Studio och WSAT. Av dessa skäl innehåller de flesta webbplatser som stöder användarkonton en uppsättning administrativa webbsidor. En sådan uppsättning webbsidor eliminerar behovet av WSAT och används av olika administrativa användare från alla datorer.
Lycka till med programmerandet!
Ytterligare läsning
Mer information om de ämnen som beskrivs i den här självstudien finns i följande resurser:
- Undersöker ASP. NET:s medlemskap, roller och profil
- Skapa ditt eget verktyg för webbplatsadministration
- Översikt över administrationsverktyget för webbplats
- Självstudier om webbplatssäkerhet