2017-09-21 3 views
0

Dies ist eine Anfängerfrage zu mySQL.So melden Sie sich ordnungsgemäß bei mySQL an

Ich sah einige Artikel und youtubes, über mySQL und C# Login-Formulare. Als ich feststellte, dass jede Lösung und jeder Artikel mit einem Formular gestartet wurde, das die Anmeldung mit dem Konto "root" ausführt, und dann mit einer Benutzer-Passwort-Tabelle in der Datenbank verglichen wurde.

Zum Beispiel unter dem Code tut, dass:

public partial class Login_Form_2 : Form 
{ 
    public Login_Form_2() 
    { 
     InitializeComponent(); 
    } 

    //Root level login ?? 
    MySqlConnection connection = new MySqlConnection(
    "datasource=localhost;port=3310;Initial Catalog='test';username=root;password=" 
    ); 

    MySqlDataAdapter adapter; 
    DataTable table = new DataTable(); 

    private void BTN_Login_Click(object sender, EventArgs e) 
    { 
     adapter = new MySqlDataAdapter("SELECT `username`, `password` FROM `users` WHERE `username` = '" + textBox_username.Text + "' AND `password` = '" + textBox_password.Text + "'", connection); 
     adapter.Fill(table); 

     if(table.Rows.Count <= 0) 
     { 
      panel1.Height = 0; 
      label_Message.ForeColor = Color.Red; 
      label_Message.Text = "Username Or Password Are Invalid"; 
      timer1.Start(); 
     } 
     else 
     { 
      panel1.Height = 0; 
      label_Message.ForeColor = Color.Green; 
      label_Message.Text = "Login Successfully"; 
      timer1.Start(); 
     } 
     table.Clear(); 
    } 
} 

denke ich Root-Passwörter nicht in Client-Seite Code sein sollten.

Und ich frage mich auch, ob solche Benutzer-Passwort-Tabellen Erlaubnis-zuweisbar sind.
So Benutzer Benutzer X darf bestimmte Feld der Tabelle Z hinzufügen, aber nicht zu Tabelle Y.

Also ist das wirklich die Art, wie ein Login aussehen sollte?

Antwort

0

Wenn Sie eine clientseitige Anwendung erstellen, sollten Sie Informationen über API-Aufrufe abrufen.

Wenn nicht, überprüfen Sie meine vorherige Antwort here für einige Einblicke, wie ich direkt mit der Datenbank verbinden. Stellen Sie sicher, dass Sie Parameters verwenden, um SQL-Injection zu verhindern.

+0

Ich bin in dem obigen Beispiel betroffen code gab ich über seine Verbindungszeichenfolge. Es ist eine Datenbank mit 'interner' Benutzertabelle, aber es protokolliert mit Root-Account des mySQL-Servers, ich sehe das in vielen Beispielen, aber ich möchte mich nicht mit root anmelden, sondern nur mit Leuten in einer bestimmten Datenbanktabelle – user3800527

+0

Sie möchten nie eine clientseitige Anwendung erstellen, die direkt mit der Datenbank verbunden ist. Wenn Sie Zugriff auf eine Datenbank haben möchten, sollten Sie die Clientseite immer mit der Serverseite teilen. Sie könnten möglicherweise eine separate Anwendung auf Ihrem Server erstellen, um die Aufrufe zu bearbeiten, oder eine Website erstellen und Daten über APIs ausführen. –

Verwandte Themen