Autenticazione su form con ruoli

giovedì 24 marzo 2011 - 10.03

d@dora Profilo | Senior Member

ciao a tutti,
sto creando un applicazione che necessita di 2 aree protette da autenticazione basata su form, ovviamente alcuni utenti potranno accedere ad entrambe le aree (administrator) e altri utenti solo ad 1 delle 2; la cosa piu' semplice sarebbe quella di poter gestire piu' directory virtuali e ad ognuna inserire un webconfig ad hoc che gestisce l'autenticazione, ma questa soluzione non e' applicabile, perche' il fornitore dello spazio web non mi permette di creare piu' dir virt all'interno dello stesso sito. Quindi devo gestire l'autenticazione mediante i ruoli, pero', siccome ho solo 2 ruoli (administrator, user) non vorrei utilizzare l'intero 'castello' con provider, db, ecc.ecc., ma solo attibuire alle 2 cartelle il ruolo e poi,in fase di login, impostare correttamente il ruolo dell'utente che accede.
Ieri ho passato tutta la sera su google per cercare una soluzione, ma ho solo perso tmpo, perche' non ho trovato nulla che mi soddisfacesse. In pratica dopo aver verificato se l'utente e' conosciuto, vorrei solo potergli attribuire il ruolo, ma non ho trovato nessuna istruzione (come rules.set o qualche cosa del genere) che mi permetta questo.

mi scuso per la discussione lunga e poco chiara.

ciao e grazie

stellare21 Profilo | Newbie

scusa d@dora ma il fornitore di spazio web è aruba?
Perchè io sto creando un'applicazione da mettere li e ho creato più webconfig, quindi se è così mi unisco alla tua domanda

d@dora Profilo | Senior Member

questo e' il msg che ho ricevuto questa mattina dallo staff tecnico di aruba:

Gentile cliente

le indichiamo il seguente link per avere maggiori informazioni sulle caratteristiche del server che ospita, attualmente, il suo dominio

http://webs211.aruba.it/informazioni.aspx

Le ricordiamo che l'applicazione è neccesario che venga situata in ROOT e che non si creano virtual directory.

http://kb.aruba.it/KB/a198/attivazione-dei-permessi-speciali-sulle-cartelle.aspx?KBSearchID=58192

Questo significa che il file di configurazione "web.config" è necessario che sia uno e situato sulla ROOT (cartella nominata come il dominio), tutte le dll devono essere all'interno della cartella BIN anch'essa in ROOT .

Il livello di sicurezza immodificabile è impostato su MEDIUM TRUST .

Per ulteriori chiarimenti e/o problemi ci contatti pure aprendo ticket di assistenza guidandoci passo passo in tutte le operazioni da Lei svolte e allegandoci immagine, in formato .jpg, dell'errore

stellare21 Profilo | Newbie

oh no!
Ecco come sospettavo, quindi sono nei guai anche io, mi unisco alla tua richiesta speriamo che qualcuno ci aiuti

d@dora Profilo | Senior Member

gia' :-)

alexmed Profilo | Guru

Ciao
Scusate se mi intrometto ma in che senso "directory virtuali" ?

Io nel mio sito (Aruba) ho creato due cartelle Admin e Friend ed al loro interno ho inserito tranquilamente il file web.config per gestire gli accessi, oltre naturalmente al web.config nella root principale.

...

Ciao

alexmed

d@dora Profilo | Senior Member

usi vs2008 ??
mi puoi far vedere la parte di autenticazione che hai messo sul webconfig principale e su quelli nelle cartelle ??

con vs2008 se inserisco un webconfig nella cartella di amministrazione mi dice che iis non e' configurato correttamente ....

ciao e grazie

alexmed Profilo | Guru

Io uso Visual Web Developer 2008 Express Edition.

Nel web.config della root ho solo la specifica <authentication mode="Forms"/>

Nella cartella Admin il file web.config è questo:

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


Nella cartella Friend:

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

In questo modo un utente Admin può accedere alla cartella Friend


alexmed

d@dora Profilo | Senior Member

io, in realta' volevo gestire 2 form di login differenti, uno per ogni cartella protetta,
ma credo non sia possibile....

da quello che vedo dai tuoi webconfig, pero', usi i ruoli con tanto di db su sql e blablabla, oppure crei il token per ogni singolo ruolo al runtime ??
io vorrei gestire l'autenticazione 'fatta a mano' e poi attivare il ruolo via codice....

alexmed Profilo | Guru

>io, in realta' volevo gestire 2 form di login differenti, uno
>per ogni cartella protetta,
>ma credo non sia possibile....
>
Questo non saprei proprio dirti.

>da quello che vedo dai tuoi webconfig, pero', usi i ruoli con
>tanto di db su sql e blablabla, oppure crei il token per ogni
>singolo ruolo al runtime ??

Si mi appoggio ad un database, Access per l'esattezza con tanto di SampleAccessProviders.dll


alexmed

d@dora Profilo | Senior Member

scusa ancora se ti dusturbo, ma, sempre nel webconfig principale, hai aggiunto sia i membership, rolemanager che i profile ??

alexmed Profilo | Guru

Ecco:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
alexmed

d@dora Profilo | Senior Member

ok, grazie, questa sera mi dedichero' all'autenticazione

ciao

alexmed Profilo | Guru

Se decidi di utilizzare i Provider ASP.NET per Microsoft Access allora guarda qui: http://www.aspitalia.com/servizi/Membership-Roles-Profile-web.config-Access.aspx

Ciao

alexmed

d@dora Profilo | Senior Member

era la pagina che gia' stavo guardando :-)

ciao e grazie

d@dora Profilo | Senior Member

ho seguito passo passo il link che mi hai postato e ci sono riuscito, pero', io ho 2 cartelle protette (a e b) dove (a) e' solo per gli admin e (b) per gli user.
Ora se io cerco di entrare con un utente del gruppo user nella cartella (a) per gli admin, correttamente mi viene negato l'accesso, pero' non mi viene segnalato nulla, solamente vengo riportato alla pagina di login. Io vorrei avvertire l'utente che non e' autorizzato , ma come posso sapere che ruolo e' assegnato alla cartella?? L'utente lo conosco e anche il suo ruolo, ma non quello della cartella.

ciao e grazie

alexmed Profilo | Guru

Ciao
Io ho impostato il mio sito, tramite il Web.sitemap e un asp:Menu, in modo tale che l'Admin e i Friend vedano solo i link di loro competenza in questo modo:

File Web.sitemap

<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
<siteMapNode title=" Home" description="Home" url="~/Default.aspx">

<siteMapNode title=" Gallery" description="Photo gallery" url="~/Gallery.aspx" />

<siteMapNode title=" Contatti" url="Contacts.aspx" />

<siteMapNode title="Admin" description="Admin" roles="Admin">
<siteMapNode title="Users" description="Users" url="~/Admin/Users.aspx" />
</siteMapNode>

<siteMapNode title="..." description="..." url="~/Friend/....aspx" roles="Friend" />

<siteMapNode title="Friends" description="Friends" roles="Friend">
<siteMapNode title="Panel" description="Panel" url="~/Friend/Panel.aspx" />
</siteMapNode>

</siteMapNode>

</siteMap>

Per conoscere il ruolo o i ruoli di un utente invece puoi fare:

For Each xRolesForUser In Roles.GetRolesForUser(User.Identity.Name)
Label1.Text &= xRolesForUser.ToString
Next

Che altro non è che una query sulla tabella aspnet_UsersInRoles

alexmed

d@dora Profilo | Senior Member

grazie per il consiglio, per adesso, se un utente non e' abilitato ad una certa area, lo rimando al login, poi si vedra'....
mentre quello che intendevo io, non era sapere a che ruolo e' associato un utente, ma che ruolo puo' accedere ad una cartella

ciao e grazie
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