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

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 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名