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