Autorizzazione alle cartelle

giovedì 29 novembre 2012 - 13.26
Tag Elenco Tags  C#  |  .NET 4.0  |  Windows Server 2008 R2  |  Visual Studio 2010

Gemini Profilo | Expert

Ciao a tutti
Ho definito i permessi alle cartelle nel web.config
<authorization>
<allow roles="admin" />
<allow roles="superadmin" />
<allow roles="azienda" />
<deny roles="cliente" />
</authorization>

Nella pagina di login ho inserito un LoginView, ora quando provo ad accedere alla cartella admin con le credenziali di un cliente invece di visualizzare il form di login e dire che l'accesso è stato negato, sembra che visualizzi il contenuto di LoggedInTemplate dato che non ha le credenziali per accedere alla pagina di default dell'area riservata.
Non ho mai utilizzato <authorization> per controlllare l'accesso alle cartelle(ho fatto sempre tutto da codice), è un comportamento normale quello che ricevo?
grazie mille

alexmed Profilo | Guru

Ciao
Prova ad aggiungere:

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

Ti passo quello che uso io

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<allow roles="Admin" />
<deny roles="Superadmin" />
<deny users="?" />
<deny users="*" />
</authorization>
</system.web>
</configuration>

Ciao
alexmed

Gluck74 Profilo | Guru

>Ciao a tutti
>Ho definito i permessi alle cartelle nel web.config
quali cartelle? tutte alla stessa maniera? tutte con la stessa configurazione?

>
>Nella pagina di login ho inserito un LoginView, ora quando provo
>ad accedere alla cartella admin con le credenziali di un cliente
>invece di visualizzare il form di login e dire che l'accesso
>è stato negato, sembra che visualizzi il contenuto di LoggedInTemplate
>dato che non ha le credenziali per accedere alla pagina di default
>dell'area riservata.
Credo che sia corretto.
L'utente è loggato (role=cliente) quindi mi pare giusto che faccia vedere il LoggedInTemplate.
Ma non puoi accedere al contenuto della pagina, e anche questo mi pare giusto perché l'hai negato nel web config.

Però i dettagli sono pochi.
spiega più ampiamente, grazie.

ciao

____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

Gemini Profilo | Expert

grazie a tutti per la risposta
Quello che voglio fare è definire i ruoli che posso accedere alla cartella 'admin' e se un utente non autorizzato prova ad accedere alla cartella far visualizzare o il form di login o un messaggio di errore.
Tutto questo lo faccio già da codice, ma mi chiedevo se fosse possibile farlo in maniera automatica.

Ho provato a inserire nel web.config(che si trova nella cartella 'admin'):
<deny users="?" />
<deny users="*" />

quando visualizzo la pagina non prende il css e non visualizza le immagini.
ancora grazie

alexmed Profilo | Guru

>quando visualizzo la pagina non prende il css e non visualizza
>le immagini.
>ancora grazie

Dov'è il CSS? e le immagini?
Prova a mettere davanti al percorso "~/"

alexmed

Gemini Profilo | Expert

la cartella immagini si trova in 'admin' e logicamente non è possibile accedere per un utente non autorizzato
ho sbagliato io :-)

alexmed Profilo | Guru

Ok, il resto funziona?
alexmed

Gemini Profilo | Expert

Ora sì
tutto ok

totti240282 Profilo | Guru

Come hai risolto ?
C'è solo un capitano !!!!!!

Gemini Profilo | Expert

Ciao Capitano
ho inserito un web.config nella cartella 'admin'
<configuration>
<system.web>
<authorization>
<allow roles="admin" />
<allow roles="superadmin" />
<allow roles="azienda" />
<deny users="*" />
<deny users="?" />
</authorization>
</system.web>

<location path="Immagini">
<system.web>
<authorization>
<allow users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>

<location path="Style">
<system.web>
<authorization>
<allow users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>

e poi inserito nella sezione 'LoggedInTemplate' un messaggio per informare che non si hanno le credenziali e un tasto per tornare al login(prima delle redirect eseguo FormsAuthentication.SignOut())

Una domanda: la classe Profile viene inizializzata quando eseguo il login? Ho provato a richiamare Profile.UserName ma mi dava null.

alexmed Profilo | Guru

>Una domanda: la classe Profile viene inizializzata quando eseguo il login? Ho provato a richiamare Profile.UserName ma mi dava null.
Per sapere il nome dell'utente autenticato basta: User.Identity.Name.
La classe Profile devi attivarla dal file Web.config
Per tutto il resto c'è la classe Membership
Ad esempio se vuoi conoscere l'ID di un utente: Membership.GetUser(User.Identity.Name).ProviderUserKey()

Ciao
alexmed

Gemini Profilo | Expert

Grazie Alex
uso già User.Identity.Name, in alcuni articoli ho visto la classe Profile ed ero curioso di capire quando veniva inizializzata.
Grazie per la risposta
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5