Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    autenticazione con sessioni - C#

    Ho questo codice, ma testandolo non funziona.

    /*da inserire nella pagina col form di login*/
    public void btnLogin_OnClick(object sender, System.EventArgs e)
    {

    string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Request.MapPath("/App_Data/utenti_test.mdb");
    string query = null;
    query = "SELECT * FROM Utenti WHERE User='" + txtUser.Text + "' AND Pass='" + txtPass.Text + "'";
    System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connectionString );
    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(query, conn);
    System.Data.OleDb.OleDbDataReader reader = null;

    try
    {
    conn.Open();
    reader = cmd.ExecuteReader();
    if (reader.Read())
    {
    // Controllo necessario per il case sensitive
    if (txtUser.Text == reader["User"] & txtPass.Text == reader["Pass"])
    {
    // Aggiungo l'utente alla sessione ed effettuo il redirect alla Home
    Session.Add("User", txtUser.Text);
    Response.Redirect("Index.aspx");
    }
    else
    {
    // Username o Password errate
    Response.Write("User e/o Pass errati - 1");
    }
    }
    else
    {
    // Username o Password errate
    Response.Write("User e/o Pass errati - 2");
    }
    }
    catch (Exception ex)
    {
    // Errore
    Response.Write("Errore");
    }
    finally
    {
    // Se la connessione è rimasta aperta, la chiudo
    if (conn != null)
    {
    conn.Close();
    }
    }

    }
    -----

    /*da inserire nelle pagine da visualizzare*/
    public void Page_Load()
    {
    if (Session["User"] != "")
    {
    // L'utente è registrato ed ha fatto il login
    // Mostra i comandi da utente registrato
    messaggio.InnerHtml = "<h1>AUTENTICATO</h1>";
    }
    else
    {
    // L'utente non ha fatto il login
    // Visualizza solo la pagina, senza i comandi
    messaggio.InnerHtml = "<h1>ACCESSO NEGATO</h1>";
    }
    }

    public void btnLogout_OnClick(object sender, System.EventArgs e)
    {
    Session.Abandon();
    Response.Redirect("Index.aspx");
    }
    Se inserisco nome utente e pass corretti, entra nel reader, ma da l'errore: "User e/o Pass errati - 1".

    Il codice originale era in VB (e funzionava), ma mi serviva in C#, quindi l'ho convertito passo passo (sia a mano che con alcuni programmi).

    Grazie x l'help..

  2. #2
    se ti da quell'errore sicuramente e' sbagliata la condizione:
    // Controllo necessario per il case sensitive
    if (txtUser.Text == reader["User"] & txtPass.Text == reader["Pass"])

    quindi fai il debug e controlla cosa c'e' in reader["user"] e in reader["pass"].


    se no prova a mettere cosi:

    ***********************
    if (reader.Read())
    {

    reader.read()
    // Controllo necessario per il case sensitive
    if (txtUser.Text == reader["User"] & txtPass.Text == reader["Pass"])
    ***********************

    perche' mi sa che il reader non si e' posizionato sul primo elemento......

    ciauzzz

  3. #3
    non funziona con il reader.Read(), ma grazie comunque per il consiglio di controllare il confronto..


    Ho risolto cosi:

    if (txtUser.Text == reader["User"].ToString() && txtPass.Text == reader["Pass"].ToString())

    ovvero trasformando il risultato del reader in stringa..

  4. #4
    Ora però il problema rimane questo:

    /*da inserire nelle pagine da visualizzare*/
    public void Page_Load()
    {
    if (Session["User"] != "")
    {
    // L'utente è registrato ed ha fatto il login
    // Mostra i comandi da utente registrato
    messaggio.InnerHtml = "<h1>AUTENTICATO</h1>";
    }
    else
    {
    // L'utente non ha fatto il login
    // Visualizza solo la pagina, senza i comandi
    messaggio.InnerHtml = "<h1>ACCESSO NEGATO</h1>";
    }
    }

    public void btnLogout_OnClick(object sender, System.EventArgs e)
    {
    Session.Abandon();
    Response.Redirect("Index.aspx");
    }
    Rimane sempre in "AUTENTICATO", anche se clicco sul tasto di Logout..

  5. #5
    ok perfetto!

    per il secondo problema una soluzione un po' rustica e' questa:

    public void btnLogout_OnClick(object sender, System.EventArgs e)
    {
    Session["User"] = ""
    Response.Redirect("Index.aspx");
    }



  6. #6
    perfetto!

    a volte le soluzioni "rustiche" sono le migliori..

    non so come nn ci abbia pensato prima..

    Grazie ancora

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.