Bạn biết đấy, các ứng dụng web cần phiên hoặc cookie để xác thực. Tôi cố gắng để xây dựng ứng dụng web với Vue.JS và Flask microframework ví dụ như ERP hoặc CRM.Làm cách nào để làm việc với các phiên trong Vue và Flask?
Tôi đang bối rối. Tôi có thể làm việc với các phiên như thế nào? Hãy nghĩ rằng chúng tôi có một mã như thế này trong 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'})
và mã front-end của chúng tôi nên như thế này:
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
})
}
}
Mọi thứ đều bình thường cho đến khi tôi làm mới trang. Khi tôi làm mới trang, tôi mất các phiên.
Phiên phía máy chủ rất quan trọng vì nhiều lý do. Nếu tôi sử dụng localStore
hoặc một cái gì đó tương tự như thế nào có thể được an toàn tôi không có ý tưởng.
Tôi cần một số trợ giúp đã làm việc trên các dự án tương tự. Bạn có thể cho tôi gợi ý. Bởi vì tôi chưa bao giờ làm việc với các dự án tương tự.
thứ khác Tôi đã đọc về chủ đề này:
- Single page application with HttpOnly cookie-based authentication and session management
- SPA best practices for authentication and session management
Tôi vẫn còn bối rối đến khoảng những gì tôi có thể làm.
Bạn có đang gửi yêu cầu trên các tên miền chéo không? nơi phiên và cookie sẽ không được gửi? –