如何解决页面转换后如何保留快速会话数据?
尝试在 Next.js 应用程序中使用 Node 和 Express.js 设置会话,但在页面转换时丢失了所有数据。 (我尝试使用 getServerSideProps 获取用户会话)
场景:
-
用户登录
-
服务器检查匹配的凭据
-
如果错误:
Give feedback on what went wrong
-
其他:
Create a session in DB Set session.sessionId from new DB (session) document Id Set session.user from DB Redirect solved with router.push('/') upon success
代码示例:
登录: 我存储这个的原因是我在创建/终止时添加时间戳 & isValid
...
// If a user is found
// Open a tracked session in the DataBase
const newSession = new UserSession();
newSession.userId = user._id;
newSession.save((err,doc) => {
if (err) {
return res.send({
success: false,message: `Error: Failed to create session,${err}`,});
}
// Save new document id (from DataBase/session) to express session sessionId
// Save user from database to session for operational tasks in the app
session.sessionId = doc._id;
session.user = user;
return res.status(200).send({
success: true,})
});
索引页面获取:
export const getServerSideProps: GetServerSideProps = async context => {
const data = await fetch('http://localhost:8080/api/verify',{
method: 'POST',headers: {
'Content-Type': 'application/json','Accept': 'application/json'
}
});
const res = await data.json()
return { props: { userData: res || null } }
}
验证模块路由:
//////////////////////
// PACKAGES
//////////////////////
const express = require("express");
const router = express.Router();
//////////////////////
// VERIFY SESSION
//////////////////////
router.post("/verify",(req,res) => {
const { session } = req;
if (!session.sessionId || !session.user) {
return res.status(404).send({
success: false,message: "Error: Invalid session!",})
}
return res.status(200).send({
success: false,user: session.user
})
});
module.exports = router;
会话在应用中包含路由之前被初始化。
在此先感谢您的帮助!
然后当过渡完成时:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。