Har byggt ett mycket enkelt administrationssystem till en hemsida. Alla sidor som har med administrationen att göra ligger i en mapp och jag har satt skydd på den här mappen genom att lägga in "authorization" i Web.Config.
Nu skulle jag vilja göra systemet lite mer avancerat så att det finns vissa roller som kan komma åt olika saker.
Helst skulle jag vilja ha alla användare i en databas där man enkelt kan ange vilka sidor varje användare ska ha rättighet att se.
Typ så här:
Nyheter.aspx - Ja/Nej
Förstasidan.aspx - Ja/Nej
Arkivet.aspx - Ja/Nej
För varje användare i databasen får du lista rättigheter för respektive sida (lagra 1 och 0 för ja och nej), och när användaren sedan surfar till den sidan så får du kolla mot databasen ifall om användaren har rättigheter till den.
Sen hur du kodar saken är en annan femma.
Just vad jag tänkte på. Eftersom web.config är en XML-baserad fil (jodå, det är den väl) så borde det gå att köra XPath eller nåt i den. Däremot är jag osäker på ifall om det fungerar med vanlig C#.
Web.Config är väl en statisk fil, som beskriver webplatsen och där man kan lägga in statiska värden? I så fall tror jag inte att ditt problem kan lösas enkelt genom den vägen, du måste uppdatera filen varje gång du får en ny användare eller behöver ändra rättigheter/behörigheter. Är inte det något problem för dig så kan du självklart använda den.
I så fall borde du kunna skapa en mapp för varje administrationsdel, för att göra det enkelt för dig?
Jag vet ju inte nu om .NET har något som du efterfrågar, men min spontana tanke är: Nej. Jag gissar på att du får lagra rollerna i en DBMS, XML-fil, text-fil, eller likvärdig databas. Kontrollen mot databasen behövs egentligen bara göras en gång, sen lagrar du användarens rollvärde i en sessionsvariabel som du kontrollerar på administrationsdelarna.
Som SPiN säger får du använda XML-fil, DBMS etc. för att lagra användarna. Att använda web.config kan vara vettigt till applikationer där användare inte modifieras så ofta. Följande kanske kan vara intressant: http://aspnet.4guysfromrolla.com/articles/082703-1.aspx