我正在使用 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
})
}