亚古兽超进化 2021-11-16 09:52 采纳率: 0%
浏览 39

Flask+Vue+redis的存储session问题

问题是这样的:
我和小伙伴一块写了一个项目,然后他用vue写的前端我用flask写的接口,本地测试的时候完全没有问题,但是当我把两个项目部署到同一台服务器上时(已经解决跨域问题),发生了一个没有想到的问题,登录注册啥的都可以实现,但是注销不生效,截图如下:

img


注销接口代码如下:

@app.route('/api/login/out', methods=['GET', 'POST'])
def login_out():
    try:
        username = session.get('username')
    except:
        username = ''
    if username:
        try:
            session.pop('username', None)
            # session['username']=None
            # print(username)
            # username=session['username']
            record_log(log_user=str(username), log_text=str(username) + '用户注销成功')
            # del session[username]
            print(session.get('username'))
            return {'state': 1}
        except Exception as e:
            # print(e)
            # username=session['username']
            record_log(log_user=str(username), log_text=str(username) + '用户注销失败')
            return {'state': 0}
    else:
        record_log(log_user='/api/login/out', log_text='无用户尝试登陆')
        return {'state': -1}

获取session代码如下:

# TODO 获取当前用户的登录状态
@app.route('/api/login/session', methods=['GET', 'POST'])
def login_session():
    record_log(log_user='/api/login/session', log_text='尝试使用session登录')
    username = session.get('username')
    print(username)
    if username:
        record_log(log_user=username, log_text=username + '用户尝试使用session登录成功')
        return {'state': 1, 'username': username}
    else:
        record_log(log_user='/api/login/session无session', log_text='用户尝试使用session登录失败')
        return {'state': 0, 'username': ''}

这个注销的里面有打印,后端打印如下:

img


不知道为什么命名已经注销了,后端也看是None,然后又有值了,session存储到了redis中,session的配置如下:

# redis 配置  session 存储到redis中
app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_REDIS'] = Redis(
    host=app.config.get('REDIS_HOST'),
    port=app.config.get('REDIS_PORT'),
    db=app.config.get('REDIS_DB_SESSION'),
    password=app.config.get('REDIS_PASSWORD', None),
    # decode_responses=app.config.get('REDIS_DECODE_RESPONSES')
)
app.config['SESSION_USE_SIGNER'] = False  # 加密混淆
app.config['SECRET_KEY'] = app.config.get('FLASK_SECRET_KEY', 'QUihvLWabm0rJ9aFkHik')  # 加密必须设置
app.config['SESSION_PERMANENT'] = True  # 设置是否长期有效 False则关闭浏览器失效 True则长期有效
app.config['PERMANENT_SESSION_LIFETIME'] = 3600  # 长期有效 设置过期时间 单位为秒 默认大概不到3小时

Session(app)

希望大家可以帮忙解决一下。

  • 写回答

2条回答 默认 最新

  • CSDN专家-Time 2021-11-16 10:00
    关注

    在前端页面,你可以把session存到 localStorage里。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月16日

悬赏问题

  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环
  • ¥15 ADS已经下载好了,但是DAS下载不了,一直显示这两种情况,有什么办法吗,非常急!