Python flask实战订餐系统微信小程序-22实现管理员退出功能

网友投稿 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小时内删除侵权内容。

上一篇:营销最前线:一年多还债4个亿!罗永浩,你可真行!
下一篇:flask wechatpy网页授权
相关文章

 发表评论

暂时没有评论,来抢沙发吧~