如何在以 flask 作为后端的 react js 应用程序中进行会话管理?
How to do session management in react js app with flask as backend?
您好,我正在开发一个使用 create-react-app 创建的网络应用程序。我正在使用烧瓶作为后端。在烧瓶中,我正在使用 CORS 和 cross_origin。我的应用如下
import random
from flask import Flask, request, session, jsonify, Response
from dbconnect import POD_Admin_DB as dbAdmin
from flask_cors import CORS, cross_origin
app = Flask(__name__)
CORS(app)
otp = "000000"
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
@app.route('/api/requestOTP',methods=["POST", "OPTIONS"])
@cross_origin(supports_credentials=True)
def pod_requestOTP():
print('requestOTP')
session['otp']=generate_code()
print((session))
print (session['otp'])
#userPhone=request.json['userPhone']
return session['otp']
@app.route('/api/verifyOTP',methods=["POST","OPTIONS"])
@cross_origin(supports_credentials=True)
def pod_verifyOTP():
if request.method =="OPTIONS":
print("here")
return Response(headers={"Content-Type": "application/json charset=utf-8",
"Allow": "POST, OPTIONS",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Content-Type",
"Access-Control-Allow-Methods": "DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT"
})
elif request.method == "POST":
print("verifyOTP")
print((session))
#print(dir(request))
print(request.data)
otp = request.json['pod_Otp']
print((otp))
userPhone=request.json['userPhone']
print(userPhone)
if otp == session['otp']:
print("otp matched")
dbAdmin.connectToDb()
dbAdmin.isClientAlreadyRegistered(userPhone)
return jsonify({"ok":"success"})
else:
print("otp not matching")
return jsonify({"Notok":"success"})
#some method that generates my otp
#def otp_generationMethod():
###code
这是我的烧瓶代码。
我从我的反应应用程序访问这两条路线。每次当我从 flask 的会话中获取 pod_verifyOTP() 方法后 requestOTP() 变为空时。
我搜索了很多关于这个问题的参考资料,但无法解决这个问题。
我应该如何维护这个会话?
我是这样做的:
我对上述代码所做的更改如下:
我导入了 flask_session
from flask_session import Session
分配的会话类型为 "filesystem"
SESSION_TYPE = 'filesystem'
然后将应用程序添加到会话 s 中,就像将其添加到 CORS 中一样
SESSION_TYPE = 'filesystem'
app.config.from_object(__name__)
Session(app)
CORS(app)
我得到了想要的输出。
您好,我正在开发一个使用 create-react-app 创建的网络应用程序。我正在使用烧瓶作为后端。在烧瓶中,我正在使用 CORS 和 cross_origin。我的应用如下
import random
from flask import Flask, request, session, jsonify, Response
from dbconnect import POD_Admin_DB as dbAdmin
from flask_cors import CORS, cross_origin
app = Flask(__name__)
CORS(app)
otp = "000000"
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
@app.route('/api/requestOTP',methods=["POST", "OPTIONS"])
@cross_origin(supports_credentials=True)
def pod_requestOTP():
print('requestOTP')
session['otp']=generate_code()
print((session))
print (session['otp'])
#userPhone=request.json['userPhone']
return session['otp']
@app.route('/api/verifyOTP',methods=["POST","OPTIONS"])
@cross_origin(supports_credentials=True)
def pod_verifyOTP():
if request.method =="OPTIONS":
print("here")
return Response(headers={"Content-Type": "application/json charset=utf-8",
"Allow": "POST, OPTIONS",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Content-Type",
"Access-Control-Allow-Methods": "DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT"
})
elif request.method == "POST":
print("verifyOTP")
print((session))
#print(dir(request))
print(request.data)
otp = request.json['pod_Otp']
print((otp))
userPhone=request.json['userPhone']
print(userPhone)
if otp == session['otp']:
print("otp matched")
dbAdmin.connectToDb()
dbAdmin.isClientAlreadyRegistered(userPhone)
return jsonify({"ok":"success"})
else:
print("otp not matching")
return jsonify({"Notok":"success"})
#some method that generates my otp
#def otp_generationMethod():
###code
这是我的烧瓶代码。 我从我的反应应用程序访问这两条路线。每次当我从 flask 的会话中获取 pod_verifyOTP() 方法后 requestOTP() 变为空时。 我搜索了很多关于这个问题的参考资料,但无法解决这个问题。 我应该如何维护这个会话?
我是这样做的: 我对上述代码所做的更改如下: 我导入了 flask_session
from flask_session import Session
分配的会话类型为 "filesystem"
SESSION_TYPE = 'filesystem'
然后将应用程序添加到会话 s 中,就像将其添加到 CORS 中一样
SESSION_TYPE = 'filesystem'
app.config.from_object(__name__)
Session(app)
CORS(app)
我得到了想要的输出。