Flask 如何检查烧瓶蓝图中的管理凭据

Flask 如何检查烧瓶蓝图中的管理凭据,flask,Flask,在呈现任何模板之前,如何检查管理员凭据 admin = Blueprint('admin', __name__, url_prefix='/Admin' ,static_folder='static', static_url_path='/static/adminUI', template_folder='templates') @admin.route('/') def login(): return redirect(url_for('admin.login')) @ad

在呈现任何模板之前,如何检查管理员凭据

admin = Blueprint('admin', __name__, url_prefix='/Admin' ,static_folder='static', static_url_path='/static/adminUI', template_folder='templates')



@admin.route('/')
def login():

    return redirect(url_for('admin.login'))


@admin.route('/login', methods=['POST'])
def login():
    admin = Admin.query.filter_by(username='Admin').first()
    passwrd = request.form.get('password')
    if admin:
        if not check_password_hash(admin.password , passwrd):
            return render_template('admin_login.html')
        else:
            return redirect(url_for('admin.dashboard'))
    else:
        return render_template('admin_login.html')
在浏览器中键入
127.0.0.1:5000/Admin
会直接将我带到仪表板,这并不好,因为任何人都可以这样做,我的目标是拥有多个管理员,并阻止非管理员访问仪表板

models.py

class Admin(db.Model):
    __tablename__ = "Administators"
    id =  db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100) , unique=True)
    password = db.Column(db.String(200) )
您可以使用Flask JWT:

您必须在登录过程中生成jwt令牌,然后需要通过http请求的头传递它

from flask import Flask
from flask_jwt import JWT, jwt_required, current_identity

#... see the quickstart section to see how to setup jwt... https://pythonhosted.org/Flask-JWT/

@app.route('/protected')
@jwt_required()
def protected():
    return '%s' % current_identity