Problema nella protezione cartella sito asp.net

venerdì 10 luglio 2009 - 18.11

cosmopsis Profilo | Junior Member

Voglio proteggere una cartella del mio sito. Se uno accedesse direttamente da link sarebbe rimandato al mio form di login. Creo un web.config nella root infilandoci per l'autenticazione queste righe:

<authentication mode="Forms">
<forms name="mioCookie" protection="All" loginUrl="~/Login.aspx" timeout="10">
</forms>
</authentication>
<authorization>
<allow users="?"/>
</authorization>

Come dire: vedi che nella root le altre eventuali pagine devono essere visitabili da chiunque.
Poi creo un secondo web.config messo nella cartella da proteggere nel quale ci ficco queste tre righe:

<configuration>
<system.web>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
</system.web>
</configuration>

Come dire: vedi che in questa cartella devono accedere solo gli utenti loggati mentre per gli altri si deve passare dal login.aspx.

Dunque: se accedo direttamente alla pagina mi fa loggare ma se ad esempio clicco su di un button creato *senza nessun tipo di codice da eseguire* mi appare l'errore "La connessione è stata annullata". Mi rifiuta il caricamento della pagina... eppure le istruzioni parlano chiaro! Probabilmente è una cavolata ma dove sbaglio????
ciao.

PS.
Ho anche modificato creando un solo file web.config nella root con il <location path>: nulla da fare.

PPS:
Ho pubblicato (sito Aruba). faccio login. Premo il button e mi riporta alla pagina di login (!).
RImetto i dati e mi appare questo errore:

Errore interpretazione XML: nessun elemento trovato
Indirizzo: http:[MIOSITO]Cartella/homeCartella.aspx?ReturnUrl=%2fLogin.aspx
Linea numero 1, colonna 1:

Non riesco a capire...

freeteo Profilo | Guru

Ciao,
concordo sul fatto di usare la "location" che nasce proprio per queste funzionalità di dare alcuni attributi diversi per alcune dir o dei file singoli.

forse il problema sta nel codice che esegui dopo che hai premuto il tasto, io di solito uso qualcosa di questo tipo:
if(....verifiche varie...) FormsAuthentication.RedirectFromLoginPage(txtUser.Text,false);

cmq c'è un'altra cosa strana, ossia che l'url della pagina è "homeCartella.aspx?ReturnUrl=%2fLogin.aspx" ossia sembra quasi che sia homeCartella.aspx" la pagina di login, e non viceversa, questo perchè solitamente dovrebbe essere qualcosa come:
http://.../login.aspx?ReturnUrl=messaggi.aspx
e non il contrario...


Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

cosmopsis Profilo | Junior Member

Grazie per la risposta Ho risolto alla fine! Era un problema di codice scritto male che portava ad una redirezione "sporca": senza entrare nel dettaglio non si autenticava mai "veramente".
Grazie di tutto.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5