flask框架中,跳过登陆界面直接访问主页面的bug的处理
使用flask框架开发系统,有输入地址跳过登陆界面直接访问主界面这个问题,可以通过下面的方法解决。
首先在主界面对应的py文件中创建一个函数:
def login_required():
def wrapper():
if 'user_id' in session:
return render_template('HomePage.html')
else:
return redirect(url_for('admin.login'))
return wrapper
然后在跳转主界面对应的视图函数上添加这个函数:
@bp.route('/')
@login_required
def homepage():
return render_template('HomePage.html')
在登陆界面对应的py文件中编写登陆相关的代码
@bp.route('/login', methods = ['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template("Login.html")
else:
if request.form['go'] == 'login':
login_username = request.form.get('login_username')
login_password = request.form.get('login_password')
val = AdminAccount.query.filter_by(username=login_username).first()
if val:
if check_password_hash(val.password, login_password):
session['user_id'] = val.username
return redirect('/user')
else:
return render_template("Login.html", error=True)
else:
return redirect("/admin/login")
elif request.form['go'] == 'register':
register_username = request.form.get('register_username')
register_password = request.form.get('register_password')
# print(register_username)
# print(register_password)
admin = AdminAccount(username=register_username, password=generate_password_hash(register_password), isSuperAdministrator=False)
db.session.add(admin)
db.session.commit()
return redirect('/admin/login')
对你有帮助的话就点个赞吧!