2016-12-25 6 views
0

Ich habe diesen Code für mein Login geschrieben, aber ich kann es nicht zum Laufen bringen. Auch wenn ich einen korrekten Satz von in der Datenbank gespeicherten Berechtigungsnachweisen eintrage, wird die Nachricht "Ungültige Anmeldeinformationen versuchen Sie es erneut" zurückgegeben.Flask Login mit SQLite3

Könnte irgendjemand einen Hinweis geben, warum dies nicht funktioniert oder eine Lösung anbieten, die sehr geschätzt wird. Vielen Dank.

def connect_db(): 
    return sqlite3.connect(app.database) 

@app.route('/', methods=['GET', 'POST']) 
def index(): 
    error = None 
    if request.method == 'POST': 
     username = request.form['username'] 
     password = request.form['password'] 
     validate_user = validate(username, password) 
     if validate_user == False: 
      error = 'Invalid Credentials Please Try Again' 
      return render_template('index.html', error=error) 
     else: 
      return redirect(url_for('loggedin')) 
    return render_template('index.html', error=error) 

def validate(username, password): 
    g.db = connect_db() 
    Validation = False 
    with g.db: 
     cursor = g.db.execute("SELECT * FROM Users") 
     rows = cursor.fetchall() 
     for row in rows: 
      database_user = row[1] 
      database_password = row[2] 
      if database_user == username: 
       Validation = check_password(database_password, password) 
    return Validation 

def check_password(hashed_password, user_password): 
    return hashed_password == hashlib.md5(user_password.encode()).hexdigest() 

Antwort

0

Angenommen, Ihre Benutzertabellenspalten 'username' und 'password'

import sqlite3 
from flask import g 

DATABASE = '/path/to/database.db' 

def get_db(): 
    db = getattr(g, '_database', None) 
    if db is None: 
     db = g._database = sqlite3.connect(DATABASE) 
    return db 


@app.route('/', methods=['GET', 'POST']) 
def index(): 
    error = None 
    if request.method == 'POST': 
     username = request.form['username'] 
     password = request.form['password'] 
     validate_user = validate(username, password) 
     if validate_user == False: 
      error = 'Invalid Credentials Please Try Again' 
      return render_template('index.html', error=error) 
     else: 
      return redirect(url_for('loggedin')) 
    return render_template('index.html', error=error) 

def query_db(query, args=(), one=False): 
    cur = get_db().execute(query, args) 
    rv = cur.fetchall() 
    cur.close() 
    return (rv[0] if rv else None) if one else rv 

def validate(username, password): 
    g.db = connect_db() 
    user = query_db('SELECT * FROM Users WHERE username = ?', 
        [username], one=True) 

    return False if user is None else check_password(user['password'], password) 

def check_password(hashed_password, user_password): 
    return hashed_password == hashlib.md5(user_password.encode()).hexdigest() 
hat
Verwandte Themen