登录成功后就是不进行跳转,浏览器中查看不到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设置进去。没有设置进去肯定取不到了

0
2
赵小八
已解决,谢谢老师
2020-03-03
共2条回复

Python Flask构建微信小程序订餐系统(可用于毕设)

微信小程序 + Python Flask 打造订餐系统全栈应用,可用于毕设。

1734 学习 · 1913 问题

查看课程