[Vb.Net] login con ruoli

martedì 18 novembre 2008 - 20.36

Anonimo Profilo | Senior Member

Salve, ho questo codice. però vorrei aggiungere i ruoli admin,moderatore,members,

Chi è che mi può dire come aggiungerli.

PREMESSA: Non posso utilizzare l'articolo che c'è scritto in questo sito.
Quindi chiedo se c'è qualcuno gentilmente che mi aggiunge (Ma mi sembra che sarà solo un campo). i ruoli,

PS: ho deciso di saper bene vb.net perchè vengo da asp.3.0 VBscript.

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

il web.config è cosi:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <customErrors mode="Off"></customErrors> <compilation debug="true"/> <authentication mode="Forms"> <forms name="AuthForm" loginUrl="login.aspx"/> </authentication> </system.web> <location path="users"> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </location> <location path="admin"> <system.web> <authorization> <allow roles="admin"/> <deny users="*"/> </authorization> <pages theme="admin"></pages> </system.web> </location> </configuration>

rossimarko Profilo | Guru

Ciao,

il problema principale è capire da dove vuoi reperire le informazioni.. Dal db di asp.net, da un tuo db o da qualche altro posto?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Anonimo Profilo | Senior Member

dal db mysql,

come ho già scritto la parte del login ma senza i ruoli.

l'unica peca, che sono in hoster senza fare nome , che non posso nemmeno uitilzzare mysql connector e mssql.

comunque da db: in questo ordine:

Id
fullname
email
username
password
role <- qui deve starci Admin,Moderatore,Members.

ok,
ciao e buona giornata.

rossimarko Profilo | Guru

Se non vuoi personalizzare i provider di asp.net come riportato nell'articolo (http://www.dotnethell.it/articles/Membership-Role-Profile-Provider.aspx) allora puoi adottare la vecchia soluzione che si usava con asp.net 1.1: http://support.microsoft.com/kb/311495
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Anonimo Profilo | Senior Member

ok,
Non è che non voglio personalizzare i provider ma è l'hoster che non vuole.

.... ho fatto una ricerca lo trovato anche i vb.net,
mi dici come posso integrare questo pezzo di codice nel mio con il db

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs) if (not(HttpContext.Current.User is Nothing)) then if HttpContext.Current.User.Identity.AuthenticationType = "Forms" then Dim id as System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity Dim MyRoles(2) As String MyRoles(0) = "Manager" MyRoles(1) = "Admin" HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,MyRoles) End if End if End sub

rossimarko Profilo | Guru

Il codice lo inserisci nel global.asax, per il db invece non conosco la tua struttura.. Comunque basta che fai una procedura che partendo dalla username dell'utente carica i suoi ruoli. Altrimenti puoi salvarti in sessione i dati quando fai la login e vedere se riesci a prelevare il valore nel metodo AuthenticateRequest
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Anonimo Profilo | Senior Member

ok, messo il codice nel global
è questo è il db.

CREATE TABLE `users` ( `Id` int(11) NOT NULL auto_increment, `fullname` varchar(255) default NULL, `email` varchar(255) default NULL, `username` varchar(255) default NULL, `password` varchar(255) default NULL, `role` varchar(255) default NULL, `info` longtext, PRIMARY KEY (`Id`) ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
Mi aiuteresti ad fare questo ingippo che non so come risolvere?.

Grazie mille.
ciao e buona giornata.

rossimarko Profilo | Guru

Per ottenere il ruolo associato al tuo utente allora puoi fare così

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

Per il command prendi spunto da quanto hai già fatto in fase di login (la password la carichi in maniera analoga), poi una volta che hai il nome del ruolo sostituisci nel global.asax il codice in cui sovrascrive l'utente corrente:

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

PS: come mai l'hoster non vuole la personalizzazione del provider? Alla fine quello che andresti a fare è la stessa cosa (carichi i dati dell'utente e dei ruoli da db) solo che ti appoggeresti ad una struttura fatta apposta

-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Anonimo Profilo | Senior Member

lo so , perchè non vuole .... perchè sono un hosting condiviso e non mi permettono di fare cose strane ed loro dicono che è per la sicurezza,
l'unico è forms authentication questo funziona senza problemi

ora guardo quello che mi hai scritto e poi ti faccio sapere,
scusa se rispondo ora ma èro al lavoro.

saluti.
e grazie mille.
buona giornata

Amodio Profilo | Expert

in asp.net 2.0o non si puo accedere alla sessione da global.asax
infatti anche io ho lo stesso problema

rossimarko Profilo | Guru

>in asp.net 2.0o non si puo accedere alla sessione da global.asax
>infatti anche io ho lo stesso problema

Dipende dall'evento del global.asa. Ci sono alcuni aventi che vengono richiamati prima che l'oggetto session sia inizializzato.

Comunque se HttpContext.Current.Session risulta nothing nell'evento che desideri gestire, si può sempre pensare di salvare il ruolo in un cookie
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Amodio Profilo | Expert

sorry è lo stesso
l'evento che cerco di gestire è Application_AuthenticateRequest
e quando raggiunge questo codice :request.Cookies("Profile").Value
mi dava errore che non era possibile accedere all'oggetto, ora invece dice che ha valore nothing!!

mah non so, pare che gli errori mutano forma ogni volta che li eseguo

Anonimo Profilo | Senior Member

Amodio: vai in questa pagina.... però lo fatto in c# , che mi piace tanto...

http://www.dotnethell.it/forum/messages.aspx?ThreadID=29050
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