flask框架中,对跳过登陆界面直接访问主页面的bug的处理

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')

对你有帮助的话就点个赞吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Why_so?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值