烧瓶验证(登录页面)

问题描述:

我正在尝试使用烧瓶创建登录页面,当他们输入正确的凭据时,他们会通过,但即使他们输入了错误的密码和用户名,他们仍然会通过!烧瓶验证(登录页面)

我的表格的index.html

<form method="post" action="/" role="login"> 
       <h3>ADMIN LOGIN</h3> 
       <div class="form-group"> 
        <input type="text" name="username" required class="form-control" placeholder="Enter Username" /> 
        <span class="glyphicon glyphicon-user"></span> 
       </div> 

       <div class="form-group"> 
        <input type="password" name="password" required class="form-control" placeholder="Enter password" /> 
        <span class="glyphicon glyphicon-lock"></span> 
       </div> 

       <button type="submit" name="go" class="btn btn-primary btn-block">Login Now</button> 

       <a href="#">Reset password</a> 
      </form> 

identityFace.py作为我的主要

from flask import Flask, session, render_template, request, redirect, g, url_for 
import os 
import model as dbHandler 

app = Flask(__name__) 
app.secret_key = 'development key' 

@app.route('/', methods=['POST', 'GET']) 
def home(): 

    if request.method == 'POST': 
     username = request.form['username'] 
     password = request.form['password'] 
     # dbHandler.insertUser(username, password) 
     users = dbHandler.retrieveUsers() 
     return render_template('home.html', users=users) 
    else: 
     return render_template('index.html') 

if __name__ == '__main__': 
    app.run() 

和我model.py

import sqlite3 as sql 

def retrieveUsers(): 
    con = sql.connect("ExamsFaceId.db") 
    cur = con.cursor() 
    cur.execute("SELECT username, password FROM users") 
    users = cur.fetchall() 
    con.close() 

    return users 

它不会返回错误。

+0

你实际上并没有检查输入值是否存在于数据库中...另外,存储明文密码的想法很糟糕 –

您确实需要查询数据库中的所有用户。您无法验证输入的信息

尝试对数据库实施您自己的userExists(username, password)函数。

例如,

'SELECT username WHERE username=%s AND password=%s' 

然后return cur.rowcount > 0

早在瓶,检查if not db.userExists(username, password),然后redirect()回到登录。

另外,我认为你应该真的只是使用Flask-Admin + Flask-Security plugins,因为它会给你这个并修复你的纯文本密码问题。