我在flask-socketio和Vuejs SPA应用程序的会话管理方面遇到问题。单独使用flask-socketio和简单的html页面可以正确管理会话。不出所料,如果我让套接字管理会话,则数据将在连接时分叉。如果我使用flask-session,则会话数据可用于套接字和常规请求。
但是,当我从准Vue SPA应用程序调用相同的函数时,会看到不同的行为。当flask-socketio管理会话时,连接之前添加到会话中的所有数据都会丢失,并且连接时会创建一个空会话。使用服务器端会话时,每次请求后会话数据都会丢失。
似乎为Vuejs应用程序的每个请求都创建了一个新会话。
对于后端,我正在运行用于会话管理的flask-socketio示例,可以在此处flask-socketio中找到它。对于前端,我使用此vuetify Webpack样板webpack创建了一个简单的vue应用。
我添加了此VueResource http帖子以进行初始身份验证。当帖子返回时,我启动与socketio的连接。从服务器打印会话将导致会话始终为空。
this.$http.post('http://0.0.0.0/session', JSON.stringify({'username': this.username, 'password': this.password, 'system': this.system}), {headers: {'Content-Type': 'application/json'}}).then(response => {
if (response.data.loggedIn === true) {
this.socket = io(location.protocol + '//' + document.domain)
}
})
为确保这不是cors问题,我使用了google-chrome --disable-web-security --user-data-dir=""
,并以相同的结果启动了google-chrome。