【发布时间】:2022-01-05 06:58:28
【问题描述】:
我有 Flask 应用和 React 应用。 我在烧瓶应用程序上有会话。 我希望烧瓶会话也在我的 React 应用程序中。 这是烧瓶应用程序的一部分
@views.route("/login/<email>/<password>")
def log(email,password):
user = User.query.filter_by(email=email).first()
if user:
if check_password_hash(user.password, password):
session.permanent = True
session["user"] = email
infor_user = user
user_infor = {"name": infor_user.username, "email": infor_user.email}
return jsonify({"success": user_infor})
else:
return jsonify({"error": "Password is incorrect"})
else:
return jsonify({"error": "User doesn't exist"})
@views.route("/checkuser")
def check_user():
if "user" in session:
user = session["user"]
infor_user = User.query.filter_by(email=user).first()
user_infor = {"name": infor_user.username, "email": infor_user.email}
return jsonify({"user": user_infor})
else:
return jsonify({"user": {}})
@views.route("/out")
def out():
session.pop("user",None)
return jsonify{"message": "logged out"}"
这就是 React 应用程序。
import {useContext,useState} from "react"
import {username} from "./username"
function Login(){
const [infor,setInfor] = useContext(username)
const [inusername, setInusername] = useState("")
const [password, setPassword] = useState("")
const [error, setError] = useState("")
if(infor){
return (
<div>You are already Logged in!!!</div>
)
}
const checkLogin = () => {
if(!inusername || !password){
setError("Those parts need to be writen")
}
else{
console.log(`http://127.0.0.1:5000/log/${inusername}/${password}`)
fetch(`http://127.0.0.1:5000/log/${inusername}/${password}`)
.then((response) => response.json())
.then((data) => {
if ("error" in data){
setError(data["error"])
}
else{
setInfor(data["seccess"])
}
});
}
}
return(
<div>
<p>{error ? error : ""}</p>
<input type="text" onChange={(e) => setInusername(e.target.value)}/>
<input type="password" onChange={(e) => setPassword(e.target.value)}/>
<button onClick={checkLogin}>Login!</button>
</div>
)
}
export default Login
我试图让会话在 React 应用程序中,但由于某种原因,它总是对我说会话不存在。 我该怎么办?
【问题讨论】:
标签: reactjs flask session-cookies