Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [C#] Login

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    login

    salve ragazzi sto cercando d'imparare aspnet e sto cercando di realizzare il il login al sito di prova che sto realizzando.Praticamente riesco ad eseguire l'iscrizione di un nuovo utente al sito, ma sto trovando difficoltà sulla fase di login, vi posto un po di codice:
    Default.aspx
    Username: <asp:TextBox id="Username" runat="server" />

    Password: <asp:TextBox id="Password" runat="server" TextMode="Password" />


    <asp:Button id="btnCheck" runat="server" Text="entra" onClick="INSButton_Click" />


    <asp:Label id="lblCheck" runat="server" />
    Default.aspx.cs
    protected void INSButton_Click(object sender, EventArgs e)
    {
    string source = "Data Source=.\\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf";
    string sql = "SELECT Username, Password FROM utenti WHERE Username = Username AND Password = Password";
    SqlConnection conn = new SqlConnection(source);
    try
    {
    conn.Open();
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.ExecuteNonQuery();
    Session.Add("Username", Username.Text);
    Session.Add("Password", Password.Text);
    Response.Redirect("~/Result.aspx");
    }
    catch (SqlException sqle)
    {
    string c = sqle.Message;
    Response.Write("Errore durante un tentativo di connessione al database");
    Response.End();
    }
    finally
    {
    conn.Close();
    }
    }
    ragazzi ora chiedo il vostro aiuto, devo praticamente confrontare i dati inseriti nel form se sono presenti nel db, se si inviami ad altra pagina

  2. #2

    Re: login

    Originariamente inviato da 84morena
    salve ragazzi sto cercando d'imparare aspnet e sto cercando di realizzare il il login al sito di prova che sto realizzando.Praticamente riesco ad eseguire l'iscrizione di un nuovo utente al sito, ma sto trovando difficoltà sulla fase di login, vi posto un po di codice:
    Default.aspx


    Default.aspx.cs


    ragazzi ora chiedo il vostro aiuto, devo praticamente confrontare i dati inseriti nel form se sono presenti nel db, se si inviami ad altra pagina
    Perché non provi a chiedere nella sezione ASP.net? Fatti spostare li.

  3. #3

  4. #4
    Nel codice che hai postato ci sono diverse cose da sistemare.
    Per prima cosa, per evitare tecniche di SQL injection è consigliabile usare i parametri al posto di costruire la stringa SQL concatenando i valori. I parametri in SQL server si identificano con @ e vanno aggiunti a cmd prima di eseguire la query.
    Dalla query occorre capire se nella tabella utenti c'è un record che ha quel determinato username e password, di conseguenza non puoi usare cmd.ExecuteNonQuery perchè questa funziona non restituisce niente. Devi per forza usare un ExecuteReader (ma anche ExecuteScalar va bene, cambiando opportunamente la query).
    Ho aggiunto a Session una variabile boolean chiamata Logged, in modo tale che per verificare in seguito se l'utente ha effettuato il login sarà sufficiente leggerne il valore.

    codice:
    protected void INSButton_Click(object sender, EventArgs e) 
    {
       string source = "Data Source=.\\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Database.mdf";
       string sql = "SELECT Username, Password FROM utenti WHERE Username = @username AND Password = @password";
       SqlConnection conn = new SqlConnection(source); 
       try
       { 
          conn.Open();
          SqlCommand cmd = new SqlCommand(sql, conn);
          cmd.Parameters.Add("@username", SqlDbType.NVarChar, 50).Value = Username.Text;
          cmd.Parameters.Add("@password", SqlDbType.NVarChar, 50).Value = Password.Text;
          SqlDataReader dr = cmd.ExecuteReader();
          if (dr.Read)
          {
             //il record esiste, login consentito
             Session.Add("Username", Username.Text);
             Session.Add("Password", Password.Text);
             Session.Add("Logged", true);
             Response.Redirect("~/Result.aspx");
          }
          else
          {
             //il record non c'è, login rifiutato
             Session.Add("Username", "");
             Session.Add("Password", "");
             Session.Add("Logged", false);
             Response.Redirect("~/error.aspx");
          }
          dr.Close;
       }
       catch (SqlException sqle)
       {
          string c = sqle.Message;
          Response.Write("Errore durante un tentativo di connessione al database");
          Response.End();
       }
       finally
       {
          conn.Close();
       }
    }
    Chi non cerca trova.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    salve grazie mille per l'aiuto,il tuo codice è perfetto.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    scusate un ultima domanda, nella realizzazione del form di username e password

    se inserisco lo strumeno "loginview" quello creato da visual2005 dalla casella strumenti, qualsiasi dati inserisco mi da sempre errore dati di login inesistenti anche se invece essi sono presenti
    <asp:loginview id="LoginArea" runat="server">
    <AnonymousTemplate>
    <asp:login id="Login1" runat="server">
    <layouttemplate>
    <div class="login">
    <h4>Login to Site</h4>
    <asp:label runat="server" id="UserNameLabel" CssClass="label" associatedcontrolid="Username">User Name</asp:label>
    <asp:textbox runat="server" id="Username" cssclass="textbox" />
    <asp:requiredfieldvalidator runat="server" id="UserNameRequired" controltovalidate="Username" validationgroup="Login1" errormessage="User Name is required." tooltip="User Name is required." >*</asp:requiredfieldvalidator>
    <asp:label runat="server" id="PasswordLabel" CssClass="label" associatedcontrolid="Password">Password</asp:label>
    <asp:textbox runat="server" id="Password" textmode="Password" cssclass="textbox" />
    <asp:requiredfieldvalidator runat="server" id="PasswordRequired" controltovalidate="Password" validationgroup="Login1" tooltip="Password is required." >*</asp:requiredfieldvalidator>
    <div><asp:checkbox runat="server" id="RememberMe" text="Remember me next time"/></div>
    <asp:imagebutton runat="server" onClick="INSButton_Click" CssClass="button"/>
    </div>
    </layouttemplate>
    </asp:login>
    </anonymoustemplate>
    <LoggedInTemplate>
    <h4><asp:loginname id="LoginName1" runat="server" formatstring="Welcome {0}!" /></h4>
    </LoggedInTemplate>
    </asp:loginview>

    mentre se creo lo script digitando il codice a mano e senza utilizzare lo strumento loginview ossia utilizzando il seguente codice non da errori e funziona perfettamente:
    Username: <asp:TextBox id="Username" runat="server" />

    Password: <asp:TextBox id="Password" runat="server" TextMode="Password" />


    <asp:Button id="btnCheck" runat="server" Text="entra" onClick="INSButton_Click" />


    <asp:Label id="lblCheck" runat="server" />
    <asp:Label id="lblmsg" runat="server" />
    sembra che vada a vedere in un altro b se sono presenti i dati, oppure bisogna mpostare il db per lo strmento loginview

    saluti

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    volevo aggiungere che quando creo automaticamente la struttura del loginview, genera automaticamente un database di nome "aspnet.mdf"
    ho anche modificato la stringa di connessione nel web.config
    <add name="Personal" connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf" providerName="System.Data.SqlClient"/>
    <authentication mode="Forms">
    <forms loginUrl="Default.aspx" protection="Validation" timeout="300" />
    </authentication>
    <authorization>
    <allow users="*"/>
    </authorization>

  8. #8
    Quei controlli usano i Membership Provider, quindi se vuoi utilizzarli devi basare la tua autenticazione sui provider. Trovi la documentazione ufficiale qui: http://msdn.microsoft.com/it-it/library/cc185055.aspx
    Davide

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    ciao allora non è possibile passare l'autenticazione forms di asp.net , da ASPNETDB.MDF a un database da me creato.
    saluti

  10. #10
    Ciao,

    certo che è possibile. Devi scriverti un membership provider "custom" e farlo lavorare sul tuo database, Puoi dare un'occhiata qui: http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx
    Davide

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 © 2026 vBulletin Solutions, Inc. All rights reserved.