【问题标题】:Persist cookies on page reload of Vue SPA在 Vue SPA 的页面重新加载时保留 cookie
【发布时间】:2020-07-12 07:51:44
【问题描述】:

我正在使用 Flask 创建一个带有 Vue 前端和 Python API 的简单 SPA。目前,我已在本地机器上配置了所有内容(API 在 localhost:5000 运行,Vue SPA 可在 localhost:8080 访问)。我正在使用flask-jwt-extended 来管理使用 JWT 的身份验证,并将访问和刷新令牌作为 cookie 在对 Vue SPA 的响应中传回。

几乎一切正常,cookie 已在浏览器中正确设置,但页面刷新后 cookie 消失。我觉得我的配置遗漏了一些东西,但到目前为止,我尝试过的任何东西都没有为我工作。有什么想法吗?

我的 jwt 扩展配置设置如下:

JWT_ACCESS_COOKIE_PATH = "/api/"
JWT_ACCESS_CSRF_COOKIE_PATH = "/api/"
JWT_ACCESS_TOKEN_EXPIRES = timedelta(minutes=60)
JWT_REFRESH_COOKIE_PATH = "/auth/refresh"
JWT_REFRESH_CSRF_COOKIE_PATH = "/auth/refresh"
JWT_REFRESH_TOKEN_EXPIRES = False
JWT_COOKIE_SECURE = False
JWT_TOKEN_LOCATION = ['cookies', 'headers']
JWT_COOKIE_CSRF_PROTECT = True
JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY')
JWT_CSRF_IN_COOKIES = True
JWT_SESSION_COOKIE = False

我的 vuex 操作中发出请求的代码在这里:

doLogin({ commit }, loginData) {
  const transport = axios.create({
    withCredentials: true
  })

  transport.post('http://localhost:5000/auth/login', {
    ...loginData
  })
}

【问题讨论】:

    标签: python vue.js flask flask-jwt-extended


    【解决方案1】:

    想通了。放屁,一切都按预期工作(我实际上还没有尝试进行 API 调用)。 cookie 似乎在刷新时消失了,因为在 SPA 中,我将成为 localhost:8080/,而 cookie 被设置为在 localhost:<port>/api/ 处调用,调用 /api/something 的端点时,cookie 被正确传递。

    【讨论】:

      猜你喜欢
      • 2020-04-19
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 2012-06-12
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多