javascript - 在 next.js 中,如何实现 session?
问题描述
我有一些 python flask 和 django 的经验,现在我正在学习 next.js 开发,并且正在努力弄清楚如何实现 session。
我的项目使用koa
作为 web 服务器和 next.js 作为一个中间件,这样的代码
import next from "next";
import Koa from "koa";
import Session from "koa-session";
import Router from "koa-router";
...
const next_app = next({...});
const handle = next_app.getRequestHandler();
next_app.prepare().then(async () => {
const server = new Koa();
const router = new Router();
server.use(Session(server)); // use koa-session middleware
...
router.get("(.*)", async (ctx) => {
console.log("server.js session: ", ctx.session);
...
// create or update session data
ctx.session.custom_data += 123;
// but how to pass ctx.session to handle(), then to page components?
await handle(ctx.req, ctx.res);
});
在上面的代码中,ctx.session
携带了每个请求的会话数据,但问题是我不知道如何将会话数据传递给 next.js,因为 next.js 入口函数调用handle(ctx.req, ctx.res)
没有将额外的会话数据作为参数.
然后我看了一下next-auth
,它也提供了会话功能,我真的很困惑,要使用哪一个,为什么?
解决方案
推荐阅读
- excel-formula - 如何在 Excel 中编写双向查找值的公式
- ios - Safari 中的 iOS 深层链接未自动打开
- c# - 如何使用 Json.Net 在永久打开的套接字上传递 Json?
- javascript - 如何在 Chart.js 中将 NaN 值更改为 0?
- regex - 正则表达式 [a-z_]+ 但必须至少包含一个下划线?
- angular - Angular http.post() 给出:“错误 415 不受支持的 MIME 类型”
- c++ - 无法访问存储在单个 UBO OpenGL 中的一组剪切平面?
- javascript - MySQL + Sequelize:无法添加或更新子行:外键约束失败
- c# - 如何在 MVC 框架中使用 MQTT 连接到代理?
- saml - SAML 元数据协商过程