烧瓶验证(登录页面)
问题描述:
我正在尝试使用烧瓶创建登录页面,当他们输入正确的凭据时,他们会通过,但即使他们输入了错误的密码和用户名,他们仍然会通过!烧瓶验证(登录页面)
我的表格的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
它不会返回错误。
答
您确实需要查询数据库中的所有用户。您无法验证输入的信息
尝试对数据库实施您自己的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,因为它会给你这个并修复你的纯文本密码问题。
你实际上并没有检查输入值是否存在于数据库中...另外,存储明文密码的想法很糟糕 –