Har utvecklat företagets nya sajt helt vb.net och är nu på sluttampen där jag ska begränsa behörighet till några icke publika mappar. Jag förutsätter att du redan använder dig av Forms authentication i din application, och att du har konfigurerat web.config i roten på applikationen för detta. Jag hade lite problem med att köra ovanstående nån gång så jag löste det på detta sättet: Jag har provat lite allt möjligt och är nu så uppsnurrad att jag inte har en aning om hur jag ska lösa detta. Allt annat har jar fattat med .net men inte web.config. Har som du skriver även provat olika web.config för olika mappar. Men ej heller detta fungerade. Jag hade för det första aldrig lagt olika web.config i olika mappar. Förvirrande och svårt att få en direkt överblick. "Jag hade för det första aldrig lagt olika web.config i olika mappar. Förvirrande och svårt att få en direkt överblick" Det är där jag missat och inte fått mina web.config att fungera. Jag har lagt <authentication> i varje web.config/location och där med fått felet som jag skrev om i mitt första inlägg. Nu funkar det! Tack! Nej det är inte "Trams", det är helt enkelt en annan variant av vad MS säger. MS har inte alltid rätt i allt du vet. Ur rent administrativt syfte är juh helt klar <location> att föredra - det funkar inte att behöva öppna flera olika dokument i underkataloger - speciellt om man skall ändra affärsregler på sidan där man måste rekonfigurera för samtiga zoner på sidan. Utvecklare & Admin är juh inte i heller alltid samma person och det är inte lika upphetsande att rota i det om man inte själv designat applikationen.Inloggning för underkatalog
Jag har provat att skapa en enkel inloggning mot sidor som ligger i en underkatalog som heter admin. Jag har provat att sätta <location> i min web.config men får då bara:
allowDefinition='MachineToApplication'
Och efter att ha läst här på pellesoft att katalogen måste vara application så har jag även provat att göra den till detta men istället slutar hela admin mappen att fungera. hela min namespace för admin kunde inte hitta ett skvatt. Plocka jag bort application i IIS så fungerar det igen.
Finns det något enkelt inlogg jag kan sätta på min default.aspx i admin mappen. Börjar brinna i knutarna får sajten ska upp nu.Sv: Inloggning för underkatalog
Skapa en separat web.config fil för varje mapp du vill skydda. Den kan se ut som denna ungefär:
<code>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
</code>
Nu kommer alla ej autenticerade användare som försöker att nå en sida i mappen att redirectas till din logg in sida.Sv: Inloggning för underkatalog
Förutsättningar, mappen "admin" skall skyddas, är en undermapp till huvudapplikationen, huvudapplikationen är öppen för alla.
La till följande i web.config
(Inte hela webconfig visas)
<code>
<configuration>
<location path="admin">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
</code>Sv: Inloggning för underkatalog
I ditt ex. så har du inte <authentication>. Ska jag inte ha det?
Tar jag ditt ex. och lägger det i min admin mapp så släpper den igenom allt?!?Sv: Inloggning för underkatalog
Det är mycket bättre om du använder <location> elementet i din rot config fil.
Web.Config konfigurerar din applikation, ett par olika element kan bara ligga i i rot foldern. Ex authentication. Den får bara ligga i din första web.config.
Om du sedan vill konfigurera olika saker för olika mappar så kan du i din första web.config använda dig av <location> elementet för att tex specificera authorization, dvs vilka som får accessa mappen.
ex)
<code>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
<location path="Sales">
<system.web>
<authorization>
<allow roles="sales" />
<deny users="*" />
<deny users="?" />
</authorization>
</system.web>
</location>
<system.web>
<compilation defaultLanguage="c#" debug="true" />
<identity impersonate="true" />
<customErrors mode="Off" />
<authentication mode="Forms">
<forms loginUrl="logon.aspx"
name="adAuthCookie"
timeout="60"
path="/" />
</authentication>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</configuration>
</code>Sv: Inloggning för underkatalog
Detta är trams, och är inte alls förenat med "Best Practice".
Det absolut bästa sättet att skydda enskilda kataloger i sin applikation är genom att följa mitt exempel. Jag har skrivit ett antal Asp.net applikationer sedan 2000 och använder metoden jag beskrev i nästan samtliga.
Om du vill skydda enskilda sidor, använd
<code>
<location path="deletepage.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
</code>
om du vill skydda hela mappen, använd en särskild web.config (du kan ha en web.config fil i alla kataloger i din applikation. Dock finns det vissa element som bara får finnas i den web.config fil som finns i applikationens rotkatalog):
<code>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
</code>
"ett par olika element kan bara ligga i i rot foldern. Ex authentication."
Detta är korrekt, annars kör som jag föreslår.
Halsningar/Sincerely
Andre Colbiornsen, Microsoft MVP Visual Developer Asp/Asp.NetSv: Inloggning för underkatalog
Sv: Inloggning för underkatalog
Jag vet inte vad det är för "antal Asp.net applikationer sedan 2000" du har skrivit och dessutom tycker jag inte det är relevant eller speciellt sakligt. För det första ställer jag mig frågande till hur man skriver applikationer på Alfa-versionen av .NET eller beta 1 utan go live licens och ser dem som seriösa, för det andra så säger det ingenting om det korrekta i användandet av ditt förlag. Du _kan_ faktiskt ha gjort fel sen 2000, jag vet att jag har lärt mig oerhört mycket sen dess och gör det fortfarande.
Min blygsamma erfarenhet av .NET (labbat sen PDC bits 2000, skarpa projekt sen Beta 2 2001, instruktör på .net sedan 2002) har dessutom ingenting med mitt förslag att göra, utan det handlar mer om systemutveckling i allmänhet:
Samla rättighetstilldelningar på samma ställe! Speciellt problematiskt blir det när du har 100+ mappar att hantera. Blir jättekul att öppna/stänga web.configs i alla dem för att lägga till en grupp.
I övrigt så tror jag att en ödmjukare hållning i forumen ger dig lite mer kredit för vad du vill ha sagt.Sv: Inloggning för underkatalog
//Andreas