Delen via


Gebruikers en rollen op de productiewebsite (C#)

door Scott Mitchell

Opmerking

Sinds dit artikel is geschreven, zijn de ASP.NET Lidmaatschapsproviders vervangen door ASP.NET Identity. We raden u ten zeerste aan om apps bij te werken om gebruik te maken van het ASP.NET Identity-platform in plaats van de Membership-providers die op het moment van schrijven in dit artikel werden aanbevolen. ASP.NET Identity heeft een aantal voordelen ten opzichte van het ASP.NET Lidmaatschapssysteem, waaronder:

  • Betere prestaties
  • Verbeterde uitbreidbaarheid en testbaarheid
  • Ondersteuning voor OAuth, OpenID Connect en tweeledige verificatie
  • Ondersteuning voor claim-gebaseerde identiteit
  • Betere interoperabiliteit met ASP.Net Core

Het ASP.NET Hulpprogramma voor websitebeheer (WSAT) biedt een webgebruikersinterface voor het configureren van lidmaatschaps- en rolleninstellingen en voor het maken, bewerken en verwijderen van gebruikers en rollen. Helaas werkt de WSAT alleen wanneer deze vanuit localhost wordt bezocht, wat betekent dat u het beheerprogramma van de productiewebsite niet kunt bereiken via uw browser. Het goede nieuws is dat er tijdelijke oplossingen zijn waarmee gebruikers en rollen in productie kunnen worden beheerd. In deze handleiding worden deze en andere tijdelijke oplossingen besproken.

Introductie

ASP.NET 2.0 heeft een aantal toepassingsservices geïntroduceerd. Dit zijn een reeks bouwsteenservices die u aan uw webtoepassing kunt toevoegen. We hebben de lidmaatschaps- en rollenservices toegevoegd aan de website Book Reviews in de zelfstudie Een website configureren die gebruikmaakt van Application Services. De lidmaatschapsservice vereenvoudigt het maken en beheren van gebruikersaccounts; de rollenservice biedt een API voor het categoriseren van gebruikers in groepen. De site Boekbeoordelingen heeft drie gebruikersaccounts - Scott, Jisun en Alice - en één rol, Beheerder, met Scott en Jisun in de beheerdersrol.

ASP.NET's applicatieservices zijn niet verbonden met een specifieke implementatie. In plaats daarvan geeft u de toepassingsservices de opdracht om een bepaalde provider te gebruiken en die provider implementeert de service met behulp van een bepaalde technologie. We hebben de webtoepassing Book Reviews geconfigureerd om de SqlMembershipProvider en SqlRoleProvider providers te gebruiken voor de lidmaatschap- en rolservices. Deze twee providers slaan gebruikersaccount- en rolgegevens op in een SQL Server-database en zijn de meest gebruikte providers voor internetwebtoepassingen die worden gehost bij een webhostingbedrijf.

Een veelvoorkomende uitdaging voor ontwikkelaars die de services Lidmaatschap en Rollen gebruiken, is het beheren van de gebruikers en rollen in de productieomgeving. Hoe verwijdert u een gebruikersaccount van de productiewebsite, voegt u een nieuwe rol toe of voegt u een bestaande gebruiker toe aan een bestaande rol? In deze zelfstudie worden verschillende technieken besproken voor het beheren van gebruikers en rollen op de productiewebsite.

Het beheerprogramma voor ASP.NET websites gebruiken

ASP.NET bevat een WSAT (Web Site Administration Tool ) waarmee u eenvoudig gebruikersaccounts en -rollen kunt maken en beheren en autorisatieregels op basis van gebruikers en rollen kunt opgeven. Als u de WSAT wilt gebruiken, klikt u op het pictogram ASP.NET Configuratie in Solution Explorer of gaat u naar het menu Website of Project en kiest u de optie ASP.NET Configuratie. Met beide benaderingen wordt een webbrowser gestart en naar de WSAT verwezen op een adres zoals: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

De WSAT is onderverdeeld in drie secties:

  • Beveiliging : gebruikers, rollen en autorisatieregels beheren.
  • ApplicationConfiguration : beheer hier de <appSettings> - en SMTP-instellingen. U kunt de toepassing ook offline halen en instellingen voor foutopsporing en tracering beheren, evenals de standaard aangepaste foutpagina opgeven.
  • ProviderConfiguration : configureer de providers die door de toepassingsservices worden gebruikt.

De sectie Beveiliging (weergegeven in afbeelding 1) bevat koppelingen voor het maken van nieuwe gebruikers, het beheren van gebruikers, het maken en beheren van rollen en het maken en beheren van toegangsregels. Hier kunt u een nieuwe rol toevoegen aan het systeem, een bestaande gebruiker verwijderen of rollen toevoegen aan of verwijderen uit een bepaald gebruikersaccount.

Schermafbeelding met de opties voor het beheren van gebruikers en rollen.

Afbeelding 1: De sectie WSAT-beveiliging bevat opties voor het beheren van gebruikers en rollen
(Klik hier om de volledige afbeelding weer te geven)

Helaas is de WSAT alleen lokaal toegankelijk. U kunt de WSAT niet bezoeken op uw externe productiewebsite; als u www.yoursite.com/asp.netwebadminfiles/default.aspx bezoekt, krijgt u een 404 Niet Gevonden antwoord. De code die de WSAT mogelijk maakt, gebruikt de Membership en Roles klassen in .NET Framework om gebruikers en rollen te maken, bewerken en verwijderen. Deze klassen raadplegen de configuratiegegevens van de webtoepassing om te bepalen welke provider moet worden gebruikt; terug in de zelfstudie Een website configureren die gebruikmaakt van Application Services, stellen we de website Boekbeoordelingen in om de SqlMembershipProvider en SqlRoleProvider providers te gebruiken. Dit omvat het toevoegen <membership> en <roleManager> secties aan 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>

Houd er rekening mee dat de <membership> en <roleManager> secties respectievelijk verwijzen naar de SqlMembershipProvider en SqlRoleProvider providers in hun type kenmerk. Deze providers slaan de gebruikers- en rolgegevens op in een opgegeven SQL Server-database. De database die door deze providers wordt gebruikt, wordt opgegeven door het connectionStringName kenmerk, ReviewsConnectionStringdat in het ~/ConfigSections/databaseConnectionStrings.config bestand is gedefinieerd. Zoals u weet, bevat het databaseConnectionStrings.config bestand in de ontwikkelomgeving de verbindingsreeks met de ontwikkelingsdatabase, terwijl het databaseConnectionStrings.config bestand in productie de verbindingsreeks voor de productiedatabase bevat.

Kortom, de WSAT moet lokaal worden geopend via de ontwikkelomgeving en werkt met de gebruikers- en rolgegevens in de database die in het databaseConnectionStrings.config bestand is opgegeven. Als we daarom de verbindingsreeksgegevens in het databaseConnectionStrings.config bestand in de ontwikkelomgeving wijzigen, kunnen we de WSAT lokaal gebruiken om gebruikers en rollen in de productieomgeving te beheren.

Als u deze functionaliteit wilt illustreren, opent u het databaseConnectionStrings.config bestand in Visual Studio in de ontwikkelomgeving en vervangt u de verbindingsreeks voor de ontwikkelingsdatabase door de verbindingsreeks voor de productiedatabase. Start vervolgens WSAT, ga naar het tabblad Beveiliging en voeg een nieuwe gebruiker met de naam Sam toe. Afbeelding 2 toont het WSAT-scherm bij het maken van dit account.

Schermafbeelding van de nieuwe gebruiker die in de productieomgeving is gemaakt.

Afbeelding 2: Een nieuwe gebruiker maken met de naam Sam in de productieomgeving
(Klik hier om de volledige afbeelding weer te geven)

Omdat we de verbindingsreeks databaseConnectionStrings.config hebben gewijzigd zodat deze verwijst naar de productiedatabaseserver, is Sam toegevoegd als gebruiker in de productieomgeving. Als u dit wilt controleren, wijzigt u de verbindingsreeks in het databaseConnectionStrings.config bestand terug naar de ontwikkelingsdatabase en gaat u naar de Login.aspx pagina in de ontwikkelomgeving. Meld u aan als Sam (zie afbeelding 3).

Schermafbeelding die laat zien dat u zich niet kunt aanmelden als Sam in de ontwikkelomgeving.

Afbeelding 3: U kunt zich niet aanmelden als Sam in de ontwikkelomgeving
(Klik hier om de volledige afbeelding weer te geven)

U kunt zich niet aanmelden als Sam in de ontwikkelomgeving omdat de gebruikersaccountgegevens niet in de lokale database bestaan. In plaats daarvan is het toegevoegd aan de productiedatabase. Als u dit wilt controleren, bekijkt u de inhoud van de aspnet_Users tabel in zowel de ontwikkelings- als productiedatabases. In de ontwikkelomgeving mogen er slechts drie records zijn voor gebruikers Scott, Jisun en Alice. De aspnet_Users tabel in de productiedatabase heeft echter vier records: Scott, Jisun, Alice en Sam. Sam kan zich daarom aanmelden via de website in productie, maar niet via de ontwikkelomgeving.

Screenshot waarop te zien is dat Sam zich kan aanmelden bij de productiewebsite.

Afbeelding 4: Sam kan zich aanmelden op de productiewebsite
(Klik hier om de volledige afbeelding weer te geven)

Opmerking

Vergeet niet om de verbindingsreeks in het databaseConnectionStrings.config bestand weer te wijzigen in de verbindingsreeks van de ontwikkelingsdatabase wanneer u klaar bent met het werken met de WSAT, anders werkt u met productiegegevens bij het testen van de site via de ontwikkelomgeving. Houd er ook rekening mee dat terwijl de techniek die we zojuist hebben besproken, de WSAT kan gebruiken om gebruikers en rollen op afstand te beheren, wijzigingen in een van de andere WSAT-configuratieopties (toegangsregels, SMTP-instellingen, foutopsporing en traceringsinstellingen, enzovoort) het Web.config bestand wijzigen. Eventuele wijzigingen in de instellingen zijn dus van toepassing op de ontwikkelomgeving en niet op de productieomgeving.

Aangepaste webpagina's voor gebruikers- en rolbeheer maken

De WSAT biedt een kant-en-klare systeem voor het beheren van gebruikers en rollen, maar kan alleen lokaal worden gestart en vereist dat er wijzigingen worden aangebracht in de gegevens van de verbindingsreeks om de gebruikers en rollen in productie te beheren. De meeste websites die gebruikersaccounts ondersteunen, bevatten ook een aantal webpagina's voor gebruikers- en rolbeheer waarmee beheerders gebruikers en rollen kunnen beheren vanaf pagina's binnen de site. Dergelijke webbeheerpagina's maken het veel eenvoudiger om gebruikers en rollen te beheren en zijn essentieel voor sites waar mogelijk veel beheerders of beheerders zijn die geen toegang hebben tot of de technische achtergrond om Visual Studio te gebruiken om de WSAT te starten.

ASP.NET bevat een aantal ingebouwde webbesturingselementen voor aanmeldingen waarmee u veel van deze beheerwebpagina's zo eenvoudig kunt implementeren als slepen en neerzetten. U kunt bijvoorbeeld een pagina maken voor beheerders om een nieuw gebruikersaccount te maken door het besturingselement CreateUserWizard naar de pagina te slepen en enkele eigenschappen in te stellen. In feite gebruikt de pagina voor het maken van gebruikers in de WSAT die wordt weergegeven in afbeelding 2 hetzelfde besturingselement CreateUserWizard dat u aan uw pagina's kunt toevoegen. Bovendien zijn de functies van de services Lidmaatschap en Rollen programmatisch beschikbaar via de Membership en Roles klassen in .NET Framework. Met deze klassen kunt u code schrijven om gebruikers en rollen te maken, bewerken en verwijderen, en om gebruikers aan rollen toe te voegen of te verwijderen, om te bepalen welke gebruikers zich in welke rollen bevinden en om andere gebruikers- en rolgerelateerde taken uit te voeren.

In de zelfstudie Een website configureren die gebruikmaakt van Application Services heb ik een pagina toegevoegd aan de map met de Admin naam CreateAccount.aspx. Op deze pagina kan een beheerder een nieuw gebruikersaccount toevoegen aan de site en opgeven of de zojuist gemaakte gebruiker de beheerdersrol heeft (zie afbeelding 5).

Schermafbeelding die laat zien dat beheerders nieuwe gebruikersaccounts kunnen maken.

Afbeelding 5: Beheerders kunnen nieuwe gebruikersaccounts maken
(Klik hier om de volledige afbeelding weer te geven)

Zorg ervoor dat u mijn Membership leest voor een gedetailleerder overzicht van het bouwen van pagina's voor gebruikers- en rolbeheer, samen met stapsgewijze instructies voor het gebruik van de Roles en klassen en de login-gerelateerde ASP.NET Webcontrole elementen. Daar vindt u richtlijnen voor het bouwen van webpagina's voor het maken van nieuwe accounts, het maken en beheren van rollen, het toewijzen van gebruikers aan rollen en andere algemene beheertaken.

Als u WSAT-achtige functionaliteit wilt implementeren op de productiewebsite, kunt u altijd uw eigen reeks webpagina's bouwen die de functies van WSAT implementeren. Bekijk de WSAT-broncode, die zich in de map %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFilesbevindt, om aan de slag te gaan. Een andere optie is om het WSAT-alternatief van Dan Clem te gebruiken, dat hij deelt in zijn artikel, Rolling Your Own Web Site Administration Tool. Dan begeleidt lezers bij het bouwen van een aangepast WSAT-achtig hulpprogramma, bevat de broncode van zijn toepassing voor downloaden (in C#) en geeft stapsgewijze instructies voor het toevoegen van zijn aangepaste WSAT aan een gehoste website.

Samenvatting

De ASP.NET Web Site Administration Tool (WSAT) kan worden gebruikt in combinatie met de toepassingsservices Lidmaatschap en Rollen voor het beheren van gebruikers- en rolgegevens voor uw website. Helaas is de WSAT alleen lokaal toegankelijk en kan deze niet worden bezocht vanaf uw productiewebsite. Door de verbindingsreeks in de ontwikkelomgeving te wijzigen zodat deze verwijst naar de productiedatabase, kunt u de WSAT gebruiken om de gebruikers en rollen op de productiewebsite te beheren.

Hoewel de WSAT-benadering een snelle en eenvoudige manier biedt om gebruikers en rollen te beheren, moet de WSAT vanuit Visual Studio worden gestart, evenals tijdelijke wijzigingen in de gegevens van de verbindingsreeks. WSAT biedt een snelle manier om gebruikers en rollen in productie te beheren, maar is lastig en werkt niet goed voor websites met meerdere beheerders of met beheerders die niet bekend zijn met Visual Studio en WSAT. Om deze redenen bevatten de meeste websites die gebruikersaccounts ondersteunen een set beheerwebpagina's. Een dergelijke set webpagina's elimineert de noodzaak voor de WSAT en wordt gebruikt door verschillende gebruikers met beheerdersrechten vanaf elke computer.

Veel plezier met programmeren!

Meer lezen

Raadpleeg de volgende bronnen voor meer informatie over de onderwerpen die in deze zelfstudie worden besproken: