0

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

几乎一切正常,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
  })
}
4

1 回答 1

0

弄清楚了。放屁,一切都按预期工作(我实际上还没有尝试进行 API 调用)。cookie 似乎在刷新时消失了,因为在 SPA 中,我将有一段localhost:8080/时间将 cookie 设置为用于调用 at localhost:<port>/api/,从而正确传递了对端点的调用/api/somethingcookie。

于 2020-04-01T00:05:56.907 回答