l'evento Application_AuthenticateRequest
dove devi assegnare il ruolo con questa: System.Web.HttpContext.Current.User=new GenericPrincipal(System.Web.HttpContext.Current.User.Identity, ruoli)
sta nel global.asax...
l'evento Application_AuthenticateRequest
dove devi assegnare il ruolo con questa: System.Web.HttpContext.Current.User=new GenericPrincipal(System.Web.HttpContext.Current.User.Identity, ruoli)
sta nel global.asax...
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
--
Ultima modifica di supermac; 20-06-2017 a 10:56
W la Ferari effetrenavenave!
il computer è un somaro veloce! (neanche tanto ndr)
si appunto, perchè è li?
L'assegnazione del ruolo non potrebbe essere fatta dove c'è il controllo di username e pwd?
Altra cosa che non capisco: dove viene valorizzato user.identity.name? Cosa contiene?
Per leggere il ruolo io avrei bisogno di memorizzare piuttosto un user.identity.ID (che dovrebbe essere l'ID del record nella tabella degli utenti), con user.identity.name non riesco a individuare univocamente un record nella mia tabella degli utenti...
W la Ferari effetrenavenave!
il computer è un somaro veloce! (neanche tanto ndr)
Boh qualcosa mi sfugge: ci sono riuscito ma con un workaround poco elegante.
Con questo quindi autentico l'utente
FormsAuthentication.RedirectFromLoginPage(userlogg ed, persistente)
dove persistente è la boolean che stabilisce se il cookie deve essere permanente o meno.
In userlogged (che ho visto essere il dato che poi diventa user.Identity.name) ho dovuto mettere <IDutente>_<nomeutente> in modo che nel global asax possa estrarlo dalla stringa e verificare il ruolo dell'utente in base al suo ID....
W la Ferari effetrenavenave!
il computer è un somaro veloce! (neanche tanto ndr)
Houston, ho bisogno di aiuto: mi sono accorto che ad ogni cambio pagina entra n volte nel global asax per l'autenticazione.... che diavolo combina???
W la Ferari effetrenavenave!
il computer è un somaro veloce! (neanche tanto ndr)
questa è la mia funzione nel global.asax
Come dicevo il mio User.Identity.Name contiene anche l'ID del record utente nella relativa tabella formattato in questo modo
<ID>_<nome dell'utente>
codice:Sub Application_AuthenticateRequest(sender As Object, e As EventArgs) If Context.Request.IsAuthenticated Then If Not String.IsNullOrEmpty(User.Identity.Name.ToString()) Then Dim ruoli As String = "" 'se il primo carattere è zero è admin If Left(User.Identity.Name.ToString(), 2) = "0_" Then ruoli = "admin, cliente, agente" Else Dim opid = User.Identity.Name.ToString() opid = Left(opid, InStr(opid, "_", CompareMethod.Text) - 1) ... mi collego al db, leggo il record dell'utente con ID=opid e metto nella stringa "ruoli" tutti i ruoli che l'utente può avere ... End If Dim ruolo As String() = Split(ruoli, ",") System.Web.HttpContext.Current.User = New System.Security.Principal.GenericPrincipal(System.Web.HttpContext.Current.User.Identity, ruolo) End If End If End Sub
W la Ferari effetrenavenave!
il computer è un somaro veloce! (neanche tanto ndr)
si, deve farlo quell'evento.
la classe User contiene l'identity principal che gira nell'applicazione, con nome utente e ruolo. Fa parte del contesto
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
si ma perchè lo carica n volte ad ogni load di pagina??
W la Ferari effetrenavenave!
il computer è un somaro veloce! (neanche tanto ndr)
Altra cosa: non sono in grado di fare il redirect sulla pagina che voglio, ovvero una volta loggato mi va sempre e indistintamente alla defaulturl definita nel webconfig ma io vorrei che se si tratta di un ruolo admin andasse in un'altra pagina.
La defaulturl è readonly e non posso modificarla da codice... per mandarlo dove voglio io chejedevodì?
W la Ferari effetrenavenave!
il computer è un somaro veloce! (neanche tanto ndr)