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

    [vb.net] problema autenticazionie con ricordami

    salve a tutti
    sapete il check che trovate nei vari siti web? dovrei implementarlo, purtroppo se chiudo il browser e riapro non mi mantiene la memorizzazione
    qui il codice:
    ovviamente nel web.config
    codice:
      <authentication mode="Forms" />

    qui vado a scrivere il cookie
    codice:
     
     Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(Login1.UserName, True, 600)
    Dim encTicket As String = FormsAuthentication.Encrypt(ticket)
     Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, encTicket))


    qui vado a leggere il cookie
    codice:
        
    Dim FormsAuthCookie As HttpCookie = Request.Cookies(FormsAuthentication.FormsCookieName) 
    Dim usr As String = FormsAuthCookie.Value
      Dim Ticket As FormsAuthenticationTicket = FormsAuthentication.Decrypt(FormsAuthCookie.Value)
      usr = Ticket.Name & ""


    cosa sbaglio?
    se chiudo il browser e riapro
    quando vado a leggere dice che FormsAuthCookie.Value è null e quindi da errore
    Ultima modifica di Kahm; 05-05-2022 a 15:35
    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
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    perche' c'e' false qui ?

    Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(Login1.UserName, False, 600)

  3. #3
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,582
    Quote Originariamente inviata da djciko Visualizza il messaggio
    perche' c'e' false qui ?

    Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(Login1.UserName, False, 600)
    il parametro ispersistent
    lo ho lasciato a false, in realtà era un test in quanto non capivo dove fosse l'errore
    originariamente è True (ora cambio)


    comunque non cambia il risultato
    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
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    quando lo usavo funzionava.

    guarda la prima risposta di questo thread, ed ovviamente assicurati che sul tuo pc di sviluppo i cookie possano essere memorizzati (antivirus e simili)

    https://stackoverflow.com/questions/...default-method

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Quote Originariamente inviata da Kahm Visualizza il messaggio
    salve a tutti
    qui vado a leggere il cookie
    Scusa ma... perché devi leggere il cookie?

    Il cookie viene scritto affinché le informazioni siano persistenti e ricaricate da ASP.NET per supportare le funzioni di Authentication e Authorization, ma l'accesso all'utente collegato, al suo nome e a tutte le altre info si fanno usando l'apposita API, e non accedendo manualmente al cookie.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Kahm, che io ricordi dovresti impostare il timeout nel config:

    codice:
    <authentication mode="Forms">
         <forms loginUrl="login.html" defaultUrl="index.html" cookieless="UseCookies" timeout="xxxxx" /><!--dovrebbe essere in minuti-->
    </authentication>

    Inoltre segui il consiglio di Alka, dovresti poter usare la classe Principal per gestire e manipolare l'autenticazione ed autorizzazione (tramite claims per i ruoli/regole eventualmente), dovresti trovarla nel HttpContext.Current.User. In questo modo puoi utilizzare direttamente gli attributi [Authorize(Roles="xx,xxx,xxxx")] sulle risorse che vuoi proteggere.

    Ma anche questa parte potrei non ricordarla bene.
    Ultima modifica di U235; 05-05-2022 a 21:04

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    confermo che il cookie non va letto.

    il framework che ci sta a fare ?

    sul riconoscimento successivo, lo fa lui in automatico..
    Ultima modifica di djciko; 06-05-2022 a 01:46

  8. #8
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,582
    Quote Originariamente inviata da djciko Visualizza il messaggio
    confermo che il cookie non va letto.

    il framework che ci sta a fare ?

    sul riconoscimento successivo, lo fa lui in automatico..
    è che devo far visualizzare il nome di chi si è collegato
    quindi per sapere chi è l'utnte devo leggere o no?

    in effetti è vero, non ho messo la data scadenza del cookie , ma anche impostandola mi da lo stesso problema, ecco le mie aggiunte
    codice:
      
    <authentication mode="Forms">          <forms loginUrl="login.html" defaultUrl="index.aspx" cookieless="UseCookies" timeout="9000" />        
    
    </authentication>




    scrivo:
    codice:
        
    Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(                1,                                     ' ticket version
                    Login1.UserName,                              ' authenticated username
                    DateTime.Now,                          ' issueDate
                    DateTime.Now.AddMinutes(30),           '/ expiryDate
                    True,                          ' True to persist across browser sessions
                    "userData",                             ' can be used to store additional user data
                    FormsAuthentication.FormsCookiePath)  ' the path for the cookie
    
                Dim encTicket As String = FormsAuthentication.Encrypt(ticket)
                Dim cookie As HttpCookie = New HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
                cookie.HttpOnly = True
                Response.Cookies.Add(cookie)
    
                Response.Redirect(FormsAuthentication.GetRedirectUrl(Login1.UserName, True))




    leggo
    codice:
     
     Dim FormsAuthCookie As HttpCookie = Request.Cookies(FormsAuthentication.FormsCookieName)    
                If Not FormsAuthCookie Is Nothing Then
    
                        Dim usr As String = FormsAuthCookie.Value
                        Dim Ticket As FormsAuthenticationTicket = FormsAuthentication.Decrypt(FormsAuthCookie.Value)
    
                        Dim roles As String() = Ticket.UserData.Split(New Char() {"|"})
                        Dim ID As IIdentity = New FormsIdentity(Ticket)
                        Dim principal As IPrincipal = New GenericPrincipal(ID, roles)
                        Context.User = principal
    
                        usr = Ticket.Name & ""
    Ultima modifica di Kahm; 06-05-2022 a 08:10
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  9. #9
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Credo che dovresti impostare anche la scadenza del cookie, non solo quella del ticket:

    codice:
    cookie.Expires = DateTime.Now.AddMinutes(30)

  10. #10
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,582
    Quote Originariamente inviata da U235 Visualizza il messaggio
    Credo che dovresti impostare anche la scadenza del cookie, non solo quella del ticket:

    codice:
    cookie.Expires = DateTime.Now.AddMinutes(30)
    oh mannaggia funziona
    era proprio questo, eppure pensavo che bastava metterlo nel web.config
    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.