【九月打卡】第11天+管理员后台账号模块开发
2022/9/16 4:17:18
本文主要是介绍【九月打卡】第11天+管理员后台账号模块开发,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:Python Flask构建微信小程序订餐系统
课程章节:第七章 管理员后台账号模块开发——7-3 登录退出(2)
主讲老师:编程浪子
7-3 登录退出(2)
1.拦截器
1.判断是否已登录
查询数据库计算出的cookie值与页面cookie值进行对比
# 判断用户是否已登录
def check_login():
cookies = request.cookies # 字典类型数据
# 存在于字典则取出value值,否则返回""空值
auth_cookie = cookies[app.config['AUTH_COOKIE_NAME']] if app.config['AUTH_COOKIE_NAME'] in cookies else None
if auth_cookie is None:
return False
auth_info = auth_cookie.split("#")
if len(auth_info) != 2:
return False
# 根据uid查询数据库用户信息
try:
user_info = User.query.filter_by(uid=auth_info[1]).first()
except Exception:
return False
# 根据uid无法查询出该用户信息
if user_info is None:
return False
# 查询的user_info对象的加密后的cookie值,与浏览器中的cookie不一致
if auth_info[0] != UserService.geneAuthCode(user_info):
return False
return user_info
2.拦截器实现
核心代码:
from application import app
from flask import request, redirect
from common.models.User import User
from common.libs.user.UserService import UserService
from common.libs.UrlManager import UrlManager
import re
@app.before_request
def before_request():
ignore_urls = app.config['IGNORE_URLS']
ignore_check_login_urls = app.config['IGNORE_CHECK_LOGIN_URLS']
path = request.path
# 静态文件不需要判断
# 正则表达式匹配无需拦截的页面
pattern = re.compile('%s' % "|".join(ignore_check_login_urls))
if pattern.match(path):
return
user_info = check_login()
# 登录页面无需重定向
pattern = re.compile('%s' % "|".join(ignore_urls))
if pattern.match(path):
return
if not user_info:
# 用户cookie值返回False,则页面返回登录页面
return redirect(UrlManager.buildUrl("/user/login"))
return
3.拦截器运行结果
4.修改cookie值是否会自动跳转至登录界面
2.登出操作
核心代码:
@route_user.route("/logout")
def logout():
# 实现登出操作
# 页面重定向至/user/login
response = make_response(redirect(UrlManager.buildUrl("/user/login")))
# 删除response中的cookie值
response.delete_cookie(app.config['AUTH_COOKIE_NAME'])
return response
页面重定向并删除浏览器缓存的cookie值
运行截图:
这篇关于【九月打卡】第11天+管理员后台账号模块开发的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署