ich hab versucht mit dem Code unten ein Login für eine Flask Webseite einzurichten. Ich habe momentan 2 angelegte Nutzer mit Name, Passwort und einer ID. Die Funktion von mir erkennt jede Eingabe als richtigen Namen an und wenn dazu noch das Passwort vom ersten Benutzer eingegeben wird, ist man eingeloggt. Das Passwort des 2. Benutzers wird allerdings auch in Kombination mit dem Richtigen Namen als Falsch ausgegeben.
Weiß jemand wie ich diese beiden Probleme behebe, so dass nur die richtige Kombination aus Nutzername und Passwort als richtig anerkannt wird?
Code: Alles auswählen
import uuid
import hashlib
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
name = request.form['username']
password = request.form['password']
database_password = " "
database_password_str = ""
conn = psycopg2.connect(port="5432")
print ("Opened database successfully")
cur = conn.cursor()
cur.execute("SELECT NAME FROM USERS ORDER BY NAME")
rows = cur.fetchall()
print(rows)
for name in rows:
if name in rows:
index = rows.index(name)
print('User Found')
cur.execute("SELECT PASSWORD FROM USERS ORDER BY PASSWORD")
row = cur.fetchall()
database_password = row[index]
[(database_password_str)] = database_password
if check_password(database_password_str, password):
session['username'] = request.form['username']
cur.execute("SELECT ID FROM USERS ORDER BY ID")
id = cur.fetchone()
#[(id, )] = id
id = str(id)
return redirect('dashboard/' + id)
else:
wrongpwd = 1
return render_template('login.html', wrongpwd=wrongpwd)
else:
return ''' False'''
return render_template('login.html')
def hash_password(password):
salt = uuid.uuid4().hex
return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt
def check_password(hashed_password, user_password):
password, salt = hashed_password.split(':')
return password == hashlib.sha256(salt.encode() + user_password.encode()).hexdigest()