linux怎么查看本机内存大小
300
2022-09-25
Python flask实战订餐系统微信小程序-22实现管理员退出功能
攔截器检测登录状态决定是否登录成功
創建一個攔截器:
from application import appfrom flask import request,redirectfrom common.models.User import Userfrom common.libs.user.UserService import UserServicefrom common.libs.UrlManager import UrlManager@app.before_requestdef before_request(): path = request.path user_info =check_login() if not user_info: return redirect(UrlManager.buildUrl("/user/login")) return'''判断用户是否登录'''def check_login(): cookies = request.cookies auth_cookie = cookies[app.config['AUTH_COOKIE_NAME']] if app.config['AUTH_COOKIE_NAME'] in cookies else None #app.logger.info(auth_cookie) if auth_cookie is None: return False auth_info = auth_cookie.split("#") if len(auth_info) != 2: return False try: user_info = User.query.filter_by(uid=auth_info[1]).first() except Exception: return False if user_info is None: return False if auth_info[0] != UserService.geneAuthCode(user_info): return False return auth_info
运行后发现重定向很多次:
base_setting.py配置過濾的url:
SERVER_PORT=8999DEBUG = FalseSQLALCHEMY_ECHO = FalseAUTH_COOKIE_NAME = "mooc_food"# 過濾urlIGNORE_URLS = [ r"^/user/login"]IGNORE_CHECK_LOGIN_URLS = [ r"^/static", r"^/favicon.ico"]
拦截器过滤掉不判断的url
from application import appfrom flask import request,redirectfrom common.models.User import Userfrom common.libs.user.UserService import UserServicefrom common.libs.UrlManager import UrlManagerimport re@app.before_requestdef before_request(): ignore_urls = app.config['IGNORE_URLS'] ignore_check_login_urls = app.config['IGNORE_CHECK_LOGIN_URLS'] path = request.path patten = re.compile(r'%s' % r"|".join(ignore_check_login_urls)) if patten.match(path): return user_info =check_login() patten = re.compile(r'%s' % r"|".join(ignore_urls)) if patten.match(path): return if not user_info: return redirect(UrlManager.buildUrl("/user/login")) return'''判断用户是否登录'''def check_login(): cookies = request.cookies auth_cookie = cookies[app.config['AUTH_COOKIE_NAME']] if app.config['AUTH_COOKIE_NAME'] in cookies else None #app.logger.info(auth_cookie) if auth_cookie is None: return False auth_info = auth_cookie.split("#") if len(auth_info) != 2: return False try: user_info = User.query.filter_by(uid=auth_info[1]).first() except Exception: return False if user_info is None: return False if auth_info[0] != UserService.geneAuthCode(user_info): return False return auth_info
此时运行 可以正确的跳转
登出功能实现
user.py
from flask import Blueprint,render_template,request,jsonify,make_response,redirectfrom common.libs.UrlManager import UrlManager@route_user.route( "/logout")def logout(): responce = make_response( redirect( UrlManager.buildUrl("/user/login") ) ) responce.delete_cookie(app.config["AUTH_COOKIE_NAME"]) return responce
运行时 退出账户时 可以看到删除了cookie
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~