2023.10.20使用特殊装饰器before_request进行登录session认证

2023.10.20使用特殊装饰器before_request进行登录session认证
简单的认证可以使用if语句对session进行判断,使用装饰器before_request会比较方便。可以实现登录任意页面之前需要验证session的存在。
装饰器的常用写法:
在这里插入图片描述

附一个简单登录页面。
1、程序架构
在这里插入图片描述
2、程序源代码

'''
# 账户模块
'''
from flask import Blueprint, render_template, Flask, request, redirect, session
from ..utils.md5 import md5

account = Blueprint('account', __name__)

@account.route('/login', methods=['GET','POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    user = request.form.get('user')
    pwd = request.form.get('pwd')

    pwd_md5 = md5(pwd)
    print(pwd_md5)

	'''
	未连接数据库时的测试用例
	'''
    if user == 'guest' and pwd_md5 == 'e6cd01c6654d178305ecb8ef97fa6f26':       # 将密码替换成md5
        session['user_info'] = {'id':154,'nickname':'guest'}    # session可以通过字典一次写完
        return redirect('/home')
    return render_template('login.html', error='用户名或密码错误')

@account.route('/logout')	    # 注销功能
def logout():
    if 'user_info' in session:
        del  session['user_info']
    return redirect('login')

bindex.py

'''
# 主页模块
'''
from flask import Blueprint, render_template, Flask, request, redirect, session

bindex = Blueprint('bindex', __name__)

# 特殊装饰器,用于各个页面进入时的session的认证
@bindex.before_request
def process_request():
    if session.get('user_info'):
        return None
    return redirect('/login')  # 拦截,返回注册页面# 登录页面

@bindex.route('/home')
def home():
    return render_template('home.html')

@bindex.route('/manu1')
def manu1():
    return "manu1"

@bindex.route('/detail/<int:nid>')
def detail(nid):
    return "detail"

@bindex.route('/manu2',methods=['GET','POST'])
def manu2():
    return "manu2"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

leigh_chen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值