Brugerstyring / Sikkerhed
ASP.NET 3.5 er blevet forsynet med fuldt værktøj til styring af brugere, roller og sikkerhed. Alle informationer om brugere gemmees i en database - SMART.
Som default anvender ASP.NET en SQL server der ligger i App_Data, men vi vil gerne bruge den samme SQL server, hvor vi har de andre data liggende.
For at konfigurere et site til at anvende en ekstern SQL server til brugerstyringen gøres følgende:
-
I mappen c:\windows\microsoft.net\framework\<version nr (start med at kigge i version 2...) ligger aspnet_regsql.exe. Kør den!
Klik Next
Klik Next
Skriv dit brugernavn, password og vælg din database og klik Next, BEMÆRK - Servernavn skal rettes til scientdata.dk\SQLEXPRESS,1433
Klik Next
På serveren er nu oprettet en række tabeller, der skal bruges til at styre brugere og roller.
Næste skridt er så nu at oprette forbindelse mellem dit web-site og tabellerne på serveren.
-
Start med at oprette en connectionstring til databasen i web.config, hvis du ikke allerede har én. Den ser sådan her ud og skal oprettes i <configuration> sektionen:
<connectionStrings>
<add name="BrugerstyringConnectionString"
connectionString="Data Source=it-fjernundervisning.dk;Initial
Catalog=Navnet på din database;Persist Security Info=True;User ID=Dit
Brugernavn;Password=Dit Password" providerName="System.Data.SqlClient" />
</connectionStrings>
-
Dernæst skal der oprettes en membership definition i web.config (i system.web sektionen):
<membership defaultProvider="KursusProvider">
<providers>
<add name="KursusProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="BrugerstyringConnectionString"
applicationName="ASPNETKursus"
minRequiredPasswordLength="5"
minRequiredNonalphanumericCharacters="0" />
</providers>
</membership>
Der er en række indstillinger man kan anvende i sådan en provider - se dem alle her: http://msdn.microsoft.com/en-us/library/whae3t94.aspx
-
Endelig skal vi sætte definition af rolle modellen i web.config (også i system.web sektionen):
<roleManager enabled="true" defaultProvider="KursusRoleProvider">
<providers>
<add name="KursusRoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="BrugerstyringConnectionString" />
</providers>
</roleManager>
Nu kan vi se om det hele virker...
Vælg ASP.NET Configuration i Website menuen i Visual Studio
Det ser sådan her ud:
Klik på Provider fanen:
Og dernæst "Select a different provider for each feature (advanced) ":
(Tag dig ikke af mine navne...)
Nu kan vi oprette roller, brugere etc.
Forms autentification
Husk også at sikre dig at dit site står tli Forms autentification - det gør du ved at klikke på "Select authentication type" på skærmen her:
Og "From the Internet" på den næste skærm.
Dette kan godt sættes op manuelt i web.config, hvis du skulle have lyst til det :-)
Og kigger du i databasen kan du faktisk se de roller mv du opretter: