Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,582

    passando di pagina non mi mantiene il ruolo

    salve a tutti
    sto gestendo tramite codice l'autenticazione ed i ruoli
    l'autenticazione va tutto bene, ora per il ruolo ho qualche problemino

    nella pagina login.aspx ho questo codice:
    codice:
       Dim ppal As System.Security.Principal.GenericPrincipal
                        FormsAuthentication.SetAuthCookie(Me.txtUser.Text, True) 'Login1.RememberMeSet)
                        Dim arrRuoli As String() = GetRuoloUser(oObj.ToString) '= {"utente", "amministratore"}
                        ppal = New System.Security.Principal.GenericPrincipal(Context.User.Identity, arrRuoli)
    se metto un punto di stop subito dopo il login e verifico con "user.isinrole("Administrator")" mi ritorna True
    ma appena cambio pagina e ritento il testo, ecco che mi spunta: False

    cosa succede?
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559
    ciao, che io sappia devi reimpostare i ruoli nell 'evento Request_authenticated ( nel global.asax:

    innanzi tutto, quando fai il login, devi salvarti nel cookie di autenticazione la stringa contenente i ruoili: qui puoi trovare un esempio:
    http://msdn.microsoft.com/it-it/libr...ionticket.aspx

    A questo punto, nel global.asax metti questo codice:


    Codice PHP:
            protected void Application_AuthenticateRequest(object senderEventArgs e)
            {
                if (
    Context.User != null && Context.User.Identity.IsAuthenticated)
                {
                    
    //user authenticathed; let's recovery information from his "ticket"
                    
    FormsIdentity userIdentity = (FormsIdentity)Context.User.Identity;
                    
    FormsAuthenticationTicket loginUserInfo userIdentity.Ticket;
                    
                    
    //recovery user roles from private user data
                    
    string[] roles loginUserInfo.UserData.Split(",".ToCharArray());

                    
    //change current identity for running in specific role.
                    //GenericPrincipal is an object with a Pair Identity/[associated roles]
                    
    Context.User = new GenericPrincipal(Context.User.Identityroles);
                }
            } 
    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

  3. #3
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,582
    Originariamente inviato da stefanomnn
    ciao, che io sappia devi reimpostare i ruoli nell 'evento Request_authenticated ( nel global.asax:

    innanzi tutto, quando fai il login, devi salvarti nel cookie di autenticazione la stringa contenente i ruoili: qui puoi trovare un esempio:
    http://msdn.microsoft.com/it-it/libr...ionticket.aspx

    A questo punto, nel global.asax metti questo codice:


    Codice PHP:
            protected void Application_AuthenticateRequest(object senderEventArgs e)
            {
                if (
    Context.User != null && Context.User.Identity.IsAuthenticated)
                {
                    
    //user authenticathed; let's recovery information from his "ticket"
                    
    FormsIdentity userIdentity = (FormsIdentity)Context.User.Identity;
                    
    FormsAuthenticationTicket loginUserInfo userIdentity.Ticket;
                    
                    
    //recovery user roles from private user data
                    
    string[] roles loginUserInfo.UserData.Split(",".ToCharArray());

                    
    //change current identity for running in specific role.
                    //GenericPrincipal is an object with a Pair Identity/[associated roles]
                    
    Context.User = new GenericPrincipal(Context.User.Identityroles);
                }
            } 
    ciao allora... ho provato ad inserire questo codice nel login :
    codice:
      Session("ID_Utente") = oObj.ToString
    
                        FormsAuthentication.SetAuthCookie(Me.txtUser.Text, True)
    
    
    
                        '-------------------Profilo---------------------
                        Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, _
                                Me.txtUser.Text, _
                               DateTime.Now, _
                               DateTime.Now.AddMinutes(30), _
                               True, _
                                 "Admin", _
                                FormsAuthentication.FormsCookiePath)
    
    
                        Dim encTicket As String = FormsAuthentication.Encrypt(ticket)
                        Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, encTicket))
                        '----------------------------------------
    e questo nel Global.asax
    codice:
     Protected Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
          
            If Not (HttpContext.Current.User Is Nothing) Then
                With HttpContext.Current.User
                    If .Identity.IsAuthenticated Then
                        Dim Roles As ArrayList
                        Roles(0) = "admin" ' Data.GetUserRoles(User.Identity.Name)
                        Dim ID As FormsIdentity = CType(.Identity, FormsIdentity)
                        HttpContext.Current.User = New System.Security.Principal.GenericPrincipal(ID, Roles)
                    End If
                End With
            End If
    prelevato da
    http://www.google.it/codesearch?hl=i...global.asax.vb



    la mia preoccupazione è come fare a prendermi il profilo dell'utente dal global.asax, in quanto io nel login lo memorizzo nella sessione, e nel global.asax non mi fa accedere alle sessioni!
    oltre a questo problema mi pare che sia tutto a posto
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559
    ma infatti non devi accedere alle sessioni, ma solo definire i ruoli,
    ovvero recuperarli dal cookie e creare il genericPrincipal!
    cmq concordo, anche a me sembra un brtutto limite non poter accedere alla sessione!

    se hai una pagina comue dalle quali derivano tutte le tue pagine, potresti farlo nel pageLoad della pagina comune, allora li' avresti accesso alla sessione!
    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

  5. #5
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,582
    Originariamente inviato da stefanomnn
    ma infatti non devi accedere alle sessioni, ma solo definire i ruoli,
    ovvero recuperarli dal cookie e creare il genericPrincipal!
    cmq concordo, anche a me sembra un brtutto limite non poter accedere alla sessione!

    se hai una pagina comue dalle quali derivano tutte le tue pagine, potresti farlo nel pageLoad della pagina comune, allora li' avresti accesso alla sessione!
    ma si, infatti come ho detto nel primo post se in login.aspx imposto il ruolo
    e poi vado nella altre, non me lo prende! eppure tutti iniziano dal login
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.