登录成功后就是不进行跳转,浏览器中查看不到cookie的name 和value
来源:7-4 登录退出(2)
赵小八
2020-03-03
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()
app.logger.info(user_info)
pattern=re.compile('%s' %"|".join(ignore_urls))
if pattern.match(path):
return
#非假即为真,返回值是假,进行重定向到登陆页面
if not user_info:
return redirect(UrlManager.buildUrl("/user/login"))
return
"""
判断用户是否已经登录
"""
def check_login():
cookies=request.cookies
#auth_cookies代表客户端传给浏览器的cookie,验证本地的cookie是否被不法分子修改
auth_cookies=cookies[app.config['AUTH_COOKIE_NAME']] if app.config['AUTH_COOKIE_NAME'] in cookies else ''
#cookie的验证过程,即将cookie的加密过程进行解密,然后验证
if auth_cookies is None:
return False
auth_info=auth_cookies.split("#")#"%s#%s"%("UserService.geneAuthCode(user_info)",user_info.uid),0代表授权码,1代表uid
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 user_info

写回答
1回答
-
编程浪子
2020-03-03
你好
那就看登录的地方有没有cookie设置进去。没有设置进去肯定取不到了
022020-03-03
相似问题