16 messaggi dal 16 gennaio 2007
ciao a tutti!
abbiamo un problema: ci chiedevamo se fosse possibile tramite un' if rindirizzare a seconda del ruolo a cui si appartiene una volta loggati ...

in pratica noi dovremmo rindirizzare in due pagine diverse a seconda che il loggato sia utente registrato o amministratore,

avete qualcosa da consigliarci????
if(User.IsInRole("ruolo"))
Response.Redirect("....")
else
Response.Redirect("....")

Fabrizio Canevali
22 messaggi dal 23 gennaio 2007
Ma certo che potete !! Tutti i siti che possidono un login fanno quello che chiedete!

Dim path As String = HostingEnvironment.ApplicationPhysicalPath() & "\mdb-database\"
My.Response.Expires = 0

' crea connessione
Dim cn As OleDbConnection
Dim ConnectionString As String = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & path & "\Accessi.mdb;" & _
"User ID=Admin;" & _
"Password="
cn = New Data.OleDb.OleDbConnection(ConnectionString)
cn.Open()
Dim SQL As String


' recupero numero accessi attuale
SQL = "SELECT * FROM Anagrafica where User='" & User.Text & "';"
Dim Selezione As New OleDbCommand(SQL, cn)

Dim RD As OleDbDataReader = Selezione.ExecuteReader()
While RD.Read
if rd.fields(3) = "Amministratore" then response.redirect "/Am.aspx"
if rd.fields(3) = "Utente" then response.redirect "/normal.aspx"
cn.Close()
exit sub
End While

yu:

' chiusura connessione nessun utente corrisponde al login
cn.Close()

response.redirect "/NOACCESS.aspx"


ricordatevi di mettere un controllo nella pagina am.aspx e normal.aspx per verificare che abbiate davvero fatto il login prima di accedere a quella stessa pagina... questo perché se fate rimanere il link in cronologia chiunque potra accedervi senza loggarsi.

ps: usate una variabile di sessione o di tipo PROFILE.

ciao
22 messaggi dal 23 gennaio 2007
lho fatto al volo l'esempio... usa conn.close prima dei redirect alle pagina di amministratore e di utente normale... me lo sono scordato... ops.. capita :-P ciao
22 messaggi dal 23 gennaio 2007
l'ho fatto al volo l'esempio... usa conn.close prima dei redirect alle pagina di amministratore e di utente normale... me lo sono scordato... ops.. capita :-P ciao
22 messaggi dal 23 gennaio 2007
l'ho fatto al volo l'esempio... usa cn.close prima dei redirect alle pagina di amministratore e di utente normale... altrimenti la connessione rimane aperta!! me lo sono scordato... ops.. capita :-P ciao
Beh, se fai il login in questo modo stai utilizzando.NET come un "surrogato" del vecchio Asp oltre che essere esposto pesantemente a sql injection.

Dai un occhiata a IPrincipal,GenericPrincipal e FormsAuthentication e visto che ci sei anche Parameter  .

Fatto questo dai un occhio a System.Web.Security.MembershipProvider e ...RolesProvider

Fabrizio Canevali
426 messaggi dal 17 aprile 2006
per nalanet.
non capisco... esiste già un post aperto dal vostro gruppo di lavoro perchè invece di continuare ad aprire post non usate quello già in essere ?
http://forum.aspitalia.com/forum/post/284281/Check-Ruoli.aspx
il mio consiglio rimane lo stesso:
metti nel DestinationPageUrl del controllo login un nome di pagina che crei e poni sotto autenticazione (cioè solo utenti registrati possono accedervi...)

poi nel page_load della pagina applichi il codice già suggeritovi da nostromo e ribadito da fabrica:
if(User.IsInRole("utente registrato")) 
Response.Redirect("nomePagina.aspx") 
else if(User.IsInRole("amministratore ")) 
Response.Redirect("nomePagina2.aspx")
else
ClientScript.RegisterClientScriptBlock(this.GetType(), "ris", "alert('Vattene!! NUN TE VOLEMO')", true);

ciao

Ciao Alessandro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.