none
Boolean e login su sito RRS feed

  • Domanda

  • Salve a tutti :D

    Sto creando un sito web con ASP.NET, utilizzando come linguaggio il C#.

    Ho un problema a cui non riesco ad ovviare. In poche parole, sul sito c'è un' area utente e un "login form"(però creato non utilizzando i controlli Login, ecc...) in quanto deve andare a verificare ID e password (una volta calcolato l'hash MD5 di quest'ultima) su un database SQL. Una volta effettuato il login (con successo) viene cambiato il valore di una boolean su "true" come in questo caso:

    try
            {
                sqllogin.Open();
                try
                {
                    sql = (string)logindo.ExecuteScalar();
                    if (sql == TextBox1.Text)
                    {
                        connected.id = (Int32)logingetid.ExecuteScalar();
                        SqlCommand getemail = new SqlCommand("use dnmembership select Email from dbo.Emails where AccountID = " + connected.id);
                        getemail.Connection = sqllogin;
                        connected.email = (string)getemail.ExecuteScalar();
                        connected.ctd = true;
                        connected.acc = TextBox1.Text;
                        Response.Redirect("~/Account/MyAccount.aspx");
                        sqllogin.Close();
                    }
                    else
                    {
                        Label4.Visible = true;
                        Label4.ForeColor = System.Drawing.Color.Red;
                        Label4.Text = "Wrong credentials! Re-Insert";
                    }
                }
                catch (SqlException ex_t)
                {
                    Label4.Visible = true;
                    Label4.ForeColor = System.Drawing.Color.Red;
                    Label4.Text = ex_t.Message;
                    sqllogin.Close();
                    connected.ctd = false;
                }
            }
            catch (SqlException ex)
            {
                sqllogin.Close();
                Label4.Visible = true;
                Label4.Text = ex.Message;
                Label4.ForeColor = System.Drawing.Color.Red;
                connected.ctd = false;
            }

    Fatto sta che c'è un HyperLink in ogni pagina del sito per fare il "Logout" (in poche parole, si viene reindirizzati ad una pagina "Exit.aspx", che non fa altro che cambiare il valore della boolean su "false" e reindirizzarti di nuovo alla home) ma, se si torna indietro col browser, il valore è come se fosse "true" e si riesce a tornare nell'area utente. Come posso ovviare questo problema?

    Grazie in anticipo,

    Matteo

    venerdì 3 aprile 2015 17:34

Risposte

  • Molte grazie per la risposta :D ho risolto però usando un'altro metodo:

    protected void Page_Load(object sender, EventArgs e)
        {
            string prev;
            try
            {
                prev = PreviousPage.ToString();
            }
            catch (NullReferenceException ex)
            {
                prev = null;
            }
            if (prev == null | prev == "ASP.account_leaveidn_aspx")
            {
                connected.ctd = false; 
            }
            else if (prev == "ASP.game_aspx" | prev == "ASP.ranking_aspx" | prev == "ASP.account_myaccount_aspx" | prev == "ASP.account_doeditpassword_aspx" | prev == "ASP.account_game_download_aspx")
            {
                
            }
            if (connected.ctd == true)
            {
                Button6.Visible = false;
                Button7.Visible = false;
                Button9.Visible = false;
                HyperLink1.Text = connected.acc + ", Go to your Account";
                HyperLink1.Visible = true;
                HyperLink3.Visible = true;
                Panel1.Visible = false;
                Panel2.Visible = true;
            }
            GetData();

    Sembra funzionare a dovere :D

    sabato 4 aprile 2015 09:27

Tutte le risposte

  • Prova a inserire all'interno dell'head della pagina
    <script language="javascript" type="text/javascript">
        window.history.forward();
    </script>
    Ciao

    Luca Congiu (congiuluc)
    Personal Blog: blog.dotnetcode.it

    Se hai trovato la soluzione all'interno del Forum, ricorda di segnalare il post come risposta, in alternativa puoi postare la soluzione da te adottata. Questo aiuterà altri utenti, che hanno riscontrato la stessa problematica, ad identificare rapidamente la soluzione/risposta corretta.

    venerdì 3 aprile 2015 19:05
    Moderatore
  • Grazie per la risposta. Vorrei che questo script venga eseguito quindi solo quando si proviene dalla pagina "Exit.aspx", e non quando si proviene da una qualsiasi.
    venerdì 3 aprile 2015 19:27
  • Per farlo basta che controlli l'urlreferrer.

    Ciao


    Luca Congiu (congiuluc)
    Personal Blog: blog.dotnetcode.it

    Se hai trovato la soluzione all'interno del Forum, ricorda di segnalare il post come risposta, in alternativa puoi postare la soluzione da te adottata. Questo aiuterà altri utenti, che hanno riscontrato la stessa problematica, ad identificare rapidamente la soluzione/risposta corretta.

    venerdì 3 aprile 2015 21:48
    Moderatore
  • Molte grazie per la risposta :D ho risolto però usando un'altro metodo:

    protected void Page_Load(object sender, EventArgs e)
        {
            string prev;
            try
            {
                prev = PreviousPage.ToString();
            }
            catch (NullReferenceException ex)
            {
                prev = null;
            }
            if (prev == null | prev == "ASP.account_leaveidn_aspx")
            {
                connected.ctd = false; 
            }
            else if (prev == "ASP.game_aspx" | prev == "ASP.ranking_aspx" | prev == "ASP.account_myaccount_aspx" | prev == "ASP.account_doeditpassword_aspx" | prev == "ASP.account_game_download_aspx")
            {
                
            }
            if (connected.ctd == true)
            {
                Button6.Visible = false;
                Button7.Visible = false;
                Button9.Visible = false;
                HyperLink1.Text = connected.acc + ", Go to your Account";
                HyperLink1.Visible = true;
                HyperLink3.Visible = true;
                Panel1.Visible = false;
                Panel2.Visible = true;
            }
            GetData();

    Sembra funzionare a dovere :D

    sabato 4 aprile 2015 09:27