29 messaggi dal 26 maggio 2017
Buongiorno.
Io una pagina con un form di Login con il campo txtUsername e txtPassword ed un bottone btnClick

io sto cercando utilizzare i cookies per recuperare la user e password per facilitare l'accesso ai miei utenti per una prossima volta.

io durante la fase di login , sul click del bottone btnClick, inserisco il codice qui sotto riportato:

                mioCookie_login = New HttpCookie("preferenze_lgn")
                mioCookie_login("usr") = Trim(txtUsername.Text)
                mioCookie_login("psw") = Trim(txtPassword.Text)
                mioCookie_login.Expires = DateTime.Now.AddMonths(6)
                Response.Cookies.Add(mioCookie_login)



Poi sul page_load faccio questo , cioè cerco di popolare i campi textbox txtUsername e txtPassword cercando di recuperare dall'oggetto cookie memorizzato in precedenza con il codice qui sotto riportato:

        If Page.IsPostBack Then

            'Response.Cookies("preferenze_lgn").Expires = DateTime.Now.AddMonths(6)
        Else

            If Not Request.Cookies("preferenze_lgn") Is Nothing Then
                If Request.Cookies("preferenze_lgn").HasKeys Then
                    'Se il cookie esiste e la pagina non è in postback, allora imposto lo stato della checkbox
                    txtUsername.Text = Request.Cookies("preferenze_lgn")("usr").ToString
                    txtPassword.Text = Request.Cookies("preferenze_lgn")("psw").ToString
                    Response.Cookies("preferenze_lgn").Expires = DateTime.Now.AddMonths(6)
                End If
            End If

        End If


ma non mi scrive nei 2 campi textbox txtUsername e txtPassword.

Non vedo scritto niente!

In attesa di un vostro riscontro vi porgo i miei cordiali saluti!

Grazie!
168 messaggi dal 10 agosto 2019
hai provato a vedere in debug dove "entra" il codice?
29 messaggi dal 26 maggio 2017
Ci guardo ancora!
Ti so dire
29 messaggi dal 26 maggio 2017
sul btnclick funzione:

il cookie si reimpie sul login, e mi da questo risultato nel value dello stesso cookie creato:

usr=carta.pietro1975@libero.it&psw=asso

quindi è giusto.


Poi faccio il logout e il cookie si svuota, perde le keys "usr" e "psw".



Poi faccio il login ,e sul page_init, e ovviamente non trova più il cookie per riempire le texbox.

Come faccio ad ovviare a questo?

grazie!
Modificato da Pietro75 il 06 marzo 2020 12:18 -
Modificato da Pietro75 il 06 marzo 2020 12:18 -
168 messaggi dal 10 agosto 2019
prova a vedere anche qua https://stackoverflow.com/questions/3140341/how-to-create-persistent-cookies-in-asp-net

"Poi faccio il logout " non è che caso usi una "funzione" che alla richiesta di logout cancella i cookies?
Modificato da surfernet123 il 06 marzo 2020 12:34 -
29 messaggi dal 26 maggio 2017
Ottima idea!
ci guardo!

Faccio solo questo!

FormsAuthentication.SignOut()

nel logout
Modificato da Pietro75 il 06 marzo 2020 12:39 -
29 messaggi dal 26 maggio 2017
Comunque se qualcuno può aiutarmi!


i cookie si svuotano nel momento in cui faccio logout con FormsAuthentication.SignOut()

quando riprovo a fare login i cookie sono vuoti!

Grazie!
189 messaggi dal 30 novembre 2004
Ciao ti giro un codice che ho usato e funziona.

Ho una classe Utility
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WepApp.BL
{
    public class Utility
    {
        /// <summary>Aggiunge un cookie</summary>
    /// <param name="key">Chiave</param>
    /// <param name="value">Valore</param>
    /// <param name="expire">Data di scadenza</param>
    /// <returns>L'esito</returns>
    public bool AddCookie(string key, string value, DateTime? expire = null)
        {
            try
            {
                HttpCookie cookie = new HttpCookie(key, value)
                {
                    Path = "/",
                    Shareable = true
                };
                if (expire != null)
                    cookie.Expires = (DateTime)expire;
                HttpContext.Current.Response.Cookies.Set(cookie);
                return true;
            }
            catch { }
            return false;
        }

        /// <summary>Legge il valore di un cookie</summary>
    /// <typeparam name="T">Tipo da leggere</typeparam>
    /// <param name="key">Chiave</param>
    /// <param name="defValue">Valore di default</param>
    /// <returns>Valore trovato oppure default</returns>
    public T ReadCookie<T>(string key, T defValue = default(T))
            where T : IConvertible
        {
            try
            {
                HttpCookie cookie = HttpContext.Current.Request.Cookies[key];
                return cookie != null
                    ? (T)Convert.ChangeType(cookie.Value, typeof(T))
                    : defValue;
            }
            catch { }
            return defValue;
        }

        /// <summary>Elimina un cookie</summary>
    /// <param name="name">Nome del cookie da eliminare</param>
    /// <returns>L'esito</returns>
    public bool RemoveCookie(string name)
        {
            try
            {
                HttpCookie cookie = HttpContext.Current.Response.Cookies[name];
                if (cookie != null)
                    cookie.Expires = DateTime.Now.AddDays(-1d);
                return true;
            }
            catch (Exception) { }
            return false;
        }
    }
}



Poi nella pagina del login ho

private void RecuperaCookie()
        {
            try
            {
                // Controllo il cookie per vedere se devo mostrare la form
                Utility utility = new Utility();
                string cookieLogin = utility.ReadCookie("UtenteLogin", "");
                if (cookieLogin.IsNullOrEmpty())
                    return;
                cookieLogin = cookieLogin.Decrypt();
                string[] split = cookieLogin.Split(';');
                if (split.Length != 2)
                    return;
                txtEmail.Text = split[0];
                txtPassword.Attributes.Add("value", split[1]);
                chkRemeber.Checked = true;
            }
            catch (Exception ex)
            {
                CaricaAlert(this.Page, "Attenzione!", $"Ops...qualcosa non va. {ex.Message}", "Warning");
                log.Error($"Errore sul RecuperaCookie Index. Messaggio: {ex.Message}", ex);
            }
        }

        private void SettaCookie()
        {
            try
            {
                Utility utility = new Utility();
                DateTime scadenza = DateTime.Now.AddYears(100);
                string dati = $"{txtEmail.Text};{txtPassword.Text}".Encrypt();
                utility.AddCookie("UtenteLogin", dati, scadenza);
            }
            catch (Exception ex)
            {
                CaricaAlert(this.Page, "Attenzione!", $"Ops...qualcosa non va. {ex.Message}", "Warning");
                log.Error($"Errore sul SettaCookie Index. Messaggio: {ex.Message}", ex);
            }
        }

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.