webForumDet fria alternativet

Skydda vissa delar med FormsAuthentication

.NETur .NET

5 svar · 342 visningar · startad av lilja

Medlem sedan juli 20041 183 inlägg
Frågan#1

Jag har precis börjat lära mig ASP.Net och tänkte att innan man skapar databasfunktioner m.m. så kan det vara bra med en inloggnings-sida så att inte vem som helst kan göra vad de vill med mina applikationer...

FormsAuthentication tycker jag fungerar bra för mig men hur mycket jag än letar så hittar jag inget svar på hur man kan göra så att enbart en mapp blir skyddad...

Ex. Jag vill att hela webbsidan skall vara öppen för allmänheten, förutom en enstaka mapp som kanske skall innehålla admin-sidor. Skapar jag då en web.config fil i roten så har jag enbart lyckats göra så att det kontrolleras om man är inloggad vart man än försöker gå... Alltså man måste vara inloggad vart man är på webbsidan och jag vill enbart kontrollera i admin-mappen...

Det verkar också som att man måste ha web.config-filen i rooten? Stämmer det, för det har jag inte heller lyckats läsa mig till? Eller i alla fall i roten på applikationer som man ställer in i IIS? Då jag inte har en egen server kan jag inte heller göra sådana inställningar (om inte loopia.se tillåter det).

Annars tänkte jag att det bara var att lägga till en ny web.config-fil i mappen admin (den mapp man vill skydda) och anger inställningar så att den kontrollerar om man är inloggad. Trodde att den ärvde inställningar från andra web.config-filer högre upp i trädstrukturen?

Går det här att fixa eller ska jag kontrollera om användaren är inloggad genom att med egen kod kontrollera i varje fil som jag vill skydda?

PS, tänkte lära mig ASP.Net med VB-kod... DS

Medlem sedan jan. 20011 140 inlägg
#2

För att skydda en mapp

<location path="mappen">
		<system.web>
			<authorization>
				<deny users="?" />
			</authorization>
		</system.web>
	</location>

eller om du vill skydda alla mappar men tillåta alla användare att se en mapp

<location path="mappen">
		<system.web>
			<authorization>
				<allow users="*" />
			</authorization>
		</system.web>
	</location>
Medlem sedan juli 20041 183 inlägg
#3

hmm, verkar bra men jag får det inte att fungera?

Det blir fel på raden med <authentication mode="Forms">

Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>

	<system.web>

		<customErrors mode="Off"/>

	</system.web>

	<!-- För att skydda enbart en mapp -->
	<location path="adressbok">

		<system.web>

			<authentication mode="Forms">
      				<forms name="testkontroll" loginUrl="adressbok/login.aspx" path="/" protection="All" timeout="30">
					<credentials passwordFormat="Clear">
						<user name="jeff" password="test" />
						<user name="mike" password="test" />
						<user name="lilja" password="test" />
					</credentials>
	  			</forms>
    			</authentication>

			<authorization>
     	 			<deny users="?" />
    			</authorization>

		</system.web>

	</location>

</configuration>
Medlem sedan juli 20041 183 inlägg
#4

Vet inte riktigt om jag gör rätt men om jag ställer in att jag vill skydda hela webbplatsen och sedan stänger av skyddet för vissa mappar så fungerar det...

Det blir alltså inte riktigt som jag tänkt då jag hellre vill stänga av skyddet för alla mappar förutom den valda... Jag skickar med hela koden i web.config utifall att någon vet hur man gör eller tills någon säger till mig att jag inte kan göra som jag vill... :)

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>
	<!-- Stänger av skyddet för valda delar av webbsidan -->
	<location path="myaspnetguestbook">
    	<system.web>

        	<customErrors mode="Off" />

        	<authorization>
            	<allow users="*" />
        	</authorization>

    	</system.web>
	</location>

	<!-- Inställningar för hela webbplatsen -->
	<system.web>
		<customErrors mode="Off" />

		<authentication mode="Forms">
      		<forms name="testkontroll" loginUrl="adressbok/login.aspx" path="/" protection="All" timeout="30">
				<credentials passwordFormat="Clear">
					<user name="lilja" password="test" />
				</credentials>
	  		</forms>
    	</authentication>

		<authorization>
     	 	<deny users="?" />
    	</authorization>
	</system.web>
</configuration>
Medlem sedan juli 20041 183 inlägg
#5

Jag lyckas inte heller göra så att rooten slipper skydd... Fungerar inte med "/" som sökväg i location??

Medlem sedan juli 20041 183 inlägg
#6

Äh, ibland är man allt bra dum... Nu förstår jag att man skriver informationen om hur man vill att sidan skall skyddas + information om användarna i vanliga system.web. När man vill skydda en speciell mapp så använder man locations och i den specificerar man enbart vilka användare som skall eller inte skall ha rättigheter att se sidor i mappen (och undermappar)... Äh, skickar med ett kodexempel ifall det är någon annan som undrar i framtiden :P

Här skyddas mappen internt:

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>

	<!-- Anger att en del av wepplattsen skall skyddas med FormsAuthentication -->
	<location path="internt">
    	<system.web>

        	<customErrors mode="Off" />

        	<authorization>
            	<deny users="?" />
        	</authorization>

    	</system.web>
	</location>

	<!-- Inställningar för hela webbplatsen -->
	<system.web>
		<!-- Visar korrekt felmeddelanden -->
		<customErrors mode="Off" />

		<authentication mode="Forms">
			<!-- Inställningar för hur skyddade sidor skall skyddas -->
      		<forms name="testkontroll" loginUrl="loggain.aspx" path="/" protection="All" timeout="30">

				<!-- Användardata -->
				<credentials passwordFormat="Clear">
					<user name="lilja" password="test" />
				</credentials>
	  		</forms>
    	</authentication>

		<!-- Tillåter att alla anvädarna ser på webbsidan -->
		<authorization>
			<allow users="?" />
    	</authorization>
	</system.web>

</configuration>
139 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)