Opsætning af Membership og Roles API

ASP.NET har - som du sikkert har hørt/læst - indbygget et API kaldet Membership som mere eller mindre automatisk kan håndtere oprettelse af brugere/roller, bruger login, ændring af bruger/rolle oplysninger m.m. - For at benytte dette kræves det at din database indeholder et sæt pre-defineret tabeller og stored procedures, samt at der i din web.config fil er konfigureret providers for Membership, Roles m.m. - Hvis du ikke kender til Membership, vil vi anbefale at du læser om Membership på MSDN først.

Membership og placering af data (MS SQL Server)

Dine bruger/roller m.m. oplysninger gemmes automatisk af Membership API'et i et sæt pre-defineret tabeller og stored procedures. Ønsker du at anvende Membership/Roles skal du konfigurere din SQL Server database til at indeholde disse tabeller og stored procedures, således databasen indeholder både dine egne tabeller og Membership API'ets tabeller/stored procedures.

Bemærk at du ikke kan anvende "App_Data" folderen til at placere en filbaseret "aspnetdb.mdf" database - denne funktionalitet er slået fra pga. sikkerhed - du skal tilføje de pre-defineret tabeller og stored procedures som er krævet af Membership API'et til din egen SQL Server database.

For at tilføje de pre-defineret tabeller og stored procedures, som er krævet af Membership API'et, til din database skal du tilføje tabeller, views, StoredProcedures m.m. via SQL scripts som Microsoft har udarbejdet.

Du finder .SQL filerne (scripts) i folderen "C:\WINDOWS\Microsoft.NET\Framework\[Versionsnummer]". Her ligger der 9 .SQL filer der installerer support for de forskellige API (de hedder alle "Install[API].SQL) - Du kan også vælge at downloade Microsofts Membership.sql fil der opretter tabeller/SPs til at understøtte Membership, Roles, Profiles og WebParts .. altså de 4 absolut mest anvendte API'er. Du logger ind på din database via Microsoft SQL Server Management Studio og afvikler de .SQL scripts der er nødvendige. Bemærk at "InstallCommon.sql" skal afvikles som det første script. Følgende er en oversigt over de scripts der understøtter de typiske API'er:

- InstallCommon.sql (SKAL udføres som det første script - og skal udføres uanset hvilket API du ønsker at benytte!)
- InstallMembership.SQL (understøtter Membership API)
- InstallRoles.SQL (Understøtter Roles API)
- InstallProfile.SQL (Understøtter Profile API)

Bemærk: Du skal erstatte databasenavnet "aspnetdb" med navnet på sin egen database på serveren i ovenstående scripts.

Når du har fået oprettet de tabeller og stored procedures som er krævet er det tid til at opsætte providers i din web.config fil.

web.config

Hele Membership API'et er - som så meget andet i ASP.NET - Provider baseret, hvilket bl.a. betyder at al konfiguration af Membership og Roles API'et sker i web.config filen. Det er derfor vigtigt at du tilretter din web.config fil til at indeholde Membership og Roles providers - se din velkomstmail som indeholder både Membership og RoleManager providers.

Se vores eksempel web.config filer: Web.config - ASP.NET 3.5 / Web.config - ASP.NET 4.0

De forskellige providers kræver at connectionStringName er udfyldt med navnet på din ConnectionString - Vi anbefaler at du anvender navnet 'MyAspNetDB', men du kan anvende et vilkårligt navn - du skal bare sikre dig at du har en ConnectionString til din database som ser således ud:

<connectionStrings>
<add name="MyAspNetDB" connectionString="DataSource=(local);Initial Catalog=DATABASE;User ID=USERNAME;Password=PASSWORD" providerName="System.Data.SqlClient" />
</connectionStrings>


Den primære web.config fil, som indeholder Membership/RoleManager providers, ConnectionString m.m., placeres i roden (folderen 'httpdocs') af dit website. Det mest almindelige er at roden være tilgængelig for anonyme brugere, men en eller flere foldere skal være beskyttet af Membership, hvilket er præcis hvad ovenstående eksempel beskriver. Eksemplet indeholder en web.config fil, hvor roden er tilgængelig for alle og folderen "admin" er beskyttet af Membership - kort fortalt skal der i den folder der skal beskyttes blot placeres en web.config fil som indeholder nedenstående:

<configuration>
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</configuration>

Hvor <deny users="?" /> indikerer at alle anonyme brugere ikke har adgang (? = anonym / * = alle). Brugeren vil automatisk blive redirected til filen "login.aspx" som skal være placeret i roden af dit website (vil typisk indeholde en login kontrol).

Membership/Roles API manager applikation

Når du har konfigureret din web.config fil korrekt er du klar til at oprette den første bruger/rolle. Dette gøres lettest ved at downloade vores Membership/Roles API manager applikation (link fremgår af din velkomstmail) og kopiere alle .aspx filer, default.htm og indeholdet af "bin" folderen op på dit webhotel - Bemærk at du på dette tidspunkt skal have en korrekt opsat web.config fil i roden af dit website, samt have kopieret tabeller/stored procedures m.m. til din database på serveren.

Typisk vil man kun anvende vores Membership/Roles API manager applikation til at oprette den/de første brugere og roller. Dette gøres af ejeren af websitet - applikationen er kun tænkt som en hjælp i de situationer, hvor man har brug for en enkelt bruger eller to til at beskytte f.eks. sin administrationsdel af websitet og derefter ikke har brug for at oprette flere brugere - Husk at fjerne applikationen efter brug, således andre ikke kan kalde den og oprette sin egen bruger!

Hvis websitet indeholder et community eller andet, hvor det er en del af websitet at brugeren skal oprette sig som bruger skal websitet selv indeholde en side hvor en kommende bruger kan oprette/registrere sig (denne side kunne f.eks. anvende en 'CreateUserWizard' kontrol).

De 7 login kontroller

Membership indeholder 7 login kontroller som du kan anvende til de mest almindelige opgaver såsom at oprette en bruger, validere en bruger (login), vise information hvis en bruger er logget ind osv. - MSDN indeholder detaljeret information omkring de 7 login kontroller.

De fleste vil nok vælge at oprette brugere via CreateUserWizard kontrollen (vist nedenfor) som automatisk opretter en bruger OG aktiverer denne, hvilket vil sige at brugeren umiddelbart efter oprettelse kan logge ind.

CreateUserWizard kontrollen har som default proptery'en "DisableCreatedUser" sat til false, hvilket betyder at brugeren kan logge ind med det samme (idet han så er "enabled"), hvilket typisk også er det man ønsker. Der kan dog være situationer, hvor man ønsker selv at bestemme hvornår den nye bruger er aktiv (så han kan logge ind). Hvis du ønsker dette skal du sætte proptery'en "DisableCreatedUser" til true på 'CreateUserWizard' kontrollen.



Ønsker man selv senere at enable brugeren kan dette gøres ved noget kode i stil med nedenstående, som enabler brugeren (IsApproved) og skifter brugerens hemmelige spørgsmål og svar:

MembershipUser u = Membership.GetUser();
u.IsApproved = true;
u.ChangePasswordQuestionAndAnswer(CurrentPassword.Text, Question.Text, Answer.Text);
Membership.UpdateUser(u);


Se iøvrigt Scott Mitchells fremragende artikel serie om ASP.NET 2.0's Membership, Roles and Profiles (download PDF) og uddrag fra bogen ASP.NET 2.0 Security (download PDF) for yderligere information.

Yderligere information og artikler

Internettet er fyldt med artikler om ASP.NET og Membership. En søgning på Google efter ASP.NET og Membership vil give dig en række artikler. Dog har vi fundet nedenstående artikler specielt interessante:



Relaterede søgeord: asp.netprogrammeringmembership
Alle priser er i DKK inkl. moms