首页 新闻 搜索 专区 学院

flask 项目上线后,cookie丢失,登陆状态没有效果

0
悬赏园豆:30 [待解决问题]

项目用的技术:vue+flask+mysql
部署到iis上

登录页核心JS:

this.axios
.post("http://127.0.0.1:5000/userlogin", this.qs.stringify(data))
.then((res) => {
...
},

后端核心Python代码:

    if user:
        session['jk_user'] = tel
        session['jk_token'] = f"{str(request.user_agent)}_{request.remote_addr}"
        # 设置过期时间
        if isrem == "true":
            session.permanent = True
            app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(minutes=60)

        return jsonify({"res": "ok"})

    else:
        return jsonify({"res": "用户名或密码错误"})

问题:

用http://127.0.0.1:5000/userlogin时,登录状态可以保存,即客户端有对应的cookie值。
现在项目上线后,把后端接口地址换成正式的地址后:http://正式域名:5000/userlogin,客户端没有对应的cookie值,登录状态不能保存。

网上很多地址说这样设置,但是还是没有效果:

app.config["SESSION_COOKIE_SECURE"] = True
app.config["SESSION_COOKIE_SAMESITE"] = "None"

ruanmou的主页 ruanmou | 初学一级 | 园豆:6
提问于:2022-09-15 17:05
< >
分享
所有回答(2)
0

你的意思是 http://127.0.0.1:5000/userloginhttp://域名:5000/userlogin 只有IP替换为域名,其他接口访问及操作都是正常的?

〆灬丶 | 园豆:1214 (小虾三级) | 2022-09-15 17:28

例如资源访问、请求啥的,iis部署没接触过;
你看下 https://blog.csdn.net/u012869793/article/details/84453193 这个有没有启发

支持(0) 反对(0) 〆灬丶 | 园豆:1214 (小虾三级) | 2022-09-15 17:32

访问数据没有问题,就是session设置的登陆状态,也就是客户端没有cookie了

支持(0) 反对(0) ruanmou | 园豆:6 (初学一级) | 2022-09-15 17:33

@〆灬丶: 你发的文章这个是flask部署到iis上,我项目已经部署好了,就是接口地址换成正式地址后,登陆状态,没有了。

支持(0) 反对(0) ruanmou | 园豆:6 (初学一级) | 2022-09-15 17:36

@ruanmou: 那就不知道了,好久没用 session、cookie 这些了 现在常用的是 1.简单令牌 2.oauth2机制

如果配置环境之类没有变化,我还是觉得是域名处理之类的地方有问题,之前都是排查 Nginx 配置,iis 没玩过;如果你最后还是没找到问题,就只能看下相关函数的源码了

支持(0) 反对(0) 〆灬丶 | 园豆:1214 (小虾三级) | 2022-09-16 08:41

@ruanmou: 楼下的答复给了我一点启发

你提问的测试都是基于 js 的吗?有没有试过客户端浏览器;其次,你可以单独写一个接口验证下是不是 set_cookie 相关的操作都无效,而不单单是登录状态

    resp = make_response('this is to set cookie')
    resp.set_cookie('username', '#test#')
    return resp
支持(0) 反对(0) 〆灬丶 | 园豆:1214 (小虾三级) | 2022-09-16 08:47
0

代码没贴全还是真的没有set_cookie()
用户首次登陆后,浏览器并不会自动设置cookie,需要在响应对象里设置cookie,这样浏览器才会记录。你的代码里暂时只看到了session,session是服务端使用的,需要与cookie配合使用。

清眸映雪 | 园豆:204 (菜鸟二级) | 2022-09-15 18:31

flask里面 Session实际上就是一个加密的Cookie,存在客户端的。你可以自己试试。

支持(0) 反对(0) ruanmou | 园豆:6 (初学一级) | 2022-09-15 18:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册