Flask身份验证(登录页面)

时间:2017-09-03 10:22:05

标签: python python-3.x flask flask-login

我正在尝试使用flask创建一个登录页面,当他们输入正确的凭据时,他们会通过,但即使他们输入了错误的密码和用户名,他们也会通过!

我的表单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

它不会返回错误。

1 个答案:

答案 0 :(得分:0)

您确实想要查询数据库中的所有用户。您没有在任何地方验证输入的信息

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

例如,

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

然后return cur.rowcount > 0

返回Flask,检查if not db.userExists(username, password),然后redirect()返回登录。

或者,我认为您应该真正使用Flask-Admin + Flask-Security plugins,因为它会为您提供此功能并修复您的纯文本密码问题。