 |
|
|
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 i SDK'et først.
Membership og placering af data (SQL Server 2005)
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 2005 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 2005 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 velkomst E-mail som
indeholder både Membership og RoleManager providers samt vores eksempel web.config fil (pdf) / (txt) eller
download et komplet web.config eksempel.
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=[USER];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).
ASPNETHOTEL.DK
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. - ASP.NET SDK'et 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:
|
|
|
|
 |
|
|