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?
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.
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>
Ä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