【发布时间】:2017-11-29 18:19:05
【问题描述】:
您知道,Web 应用程序需要会话或 cookie 来进行身份验证。我尝试使用 Vue.JS 和 Flask 微框架(例如 ERP 或 CRM)构建 Web 应用程序。
我很困惑。如何使用会话?假设我们在 Flask 中有这样的代码:
import os
from flask import Flask, request, jsonify, abort, session
app = Flask(__name__)
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY') or \
'e5ac358c-f0bf-11e5-9e39-d3b532c10a28'
@app.route('/login', methods=['POST'])
def user_login():
user = request.form['user']
session['isLogged'] = True
return jsonify({'status': session['isLogged']})
@app.route('/user-info')
def user_info():
if 'isLogged' in session:
return jsonify({'user': 'ali'})
else:
return jsonify({'error': 'Authentication error'})
我们的前端代码应该是这样的:
mounted() {
this.checkIsLogged();
},
methods: {
checkIsLogged() {
fetch('http://127.0.0.1:5000/user-info', {
mode: 'no-cors',
method: 'GET',
}).then((resp) => {
return resp;
}).then((obj) => {
if(obj.user) {
this.status = true
}
})
},
login() {
let frmData = new FormData(document.querySelector("#frmLogin"));
fetch('http://127.0.0.1:5000/login', {
mode: 'no-cors',
method: 'POST',
body: frmData,
}).then((resp) => {
return resp;
}).then((obj) => {
this.status = obj.status
})
}
}
在我刷新页面之前一切正常。当我刷新页面时,我会丢失会话。
出于多种原因,服务器端会话很重要。如果我使用localStore 或类似的东西,我不知道如何安全。
我需要一些从事类似项目的帮助。你可以给我建议。因为我从来没有做过类似的项目。
我读过的关于这个主题的其他内容:
- Single page application with HttpOnly cookie-based authentication and session management
- SPA best practices for authentication and session management
我仍然对我能做什么感到困惑。
【问题讨论】:
-
您是否在跨域发送请求?会话和 cookie 不会发送到哪里?