请原谅我的无知...我没有100%掌握会话cookie和身份验证,这就是为什么我正在构建一些东西...了解,然后做得更好...
无论如何,我正在尝试在我的nextJS应用程序上使用session cookie,并且我正在从iron session中移植示例代码......然而,iron session的示例使用了pages router,我没有在我的应用程序中使用它。
例如,以下是来自iron sessions示例的登录路径:
import { Octokit } from "octokit";
import { withIronSessionApiRoute } from "iron-session/next";
import { sessionOptions } from "lib/session";
const octokit = new Octokit();
export default withIronSessionApiRoute(async (req, res) => {
const { username } = await req.body;
try {
const {
data: { login, avatar_url },
} = await octokit.rest.users.getByUsername({ username });
const user = { isLoggedIn: true, login, avatarUrl: avatar_url };
req.session.user = user;
await req.session.save();
res.json(user);
} catch (error) {
res.status(500).json({ message: error.message });
}
}, sessionOptions);
字符串
你可以看到我引用的完整代码:https://github.com/vvo/iron-session follow /examples/next.js/
现在,我面临的问题是,nextJS中的应用路由器需要POST()或GET()函数才能正常工作,而我并不完全理解withIronSessionApiRoute()是如何将自己包裹在路由周围的。
我已经广泛地研究了nextJS文档,但没有发现太多关于将页面路由器迁移到应用路由器的内容。有什么建议或想法吗?
我希望这个问题能得到明确的回答,如果没有,请随时提出澄清问题。
一如既往,谢谢!克里斯·鲁德
1条答案
按热度按时间btxsgosb1#
我最近将一个应用程序迁移到应用程序路由器,withIronSessionSsr方法只是一个更容易使用的 Package 器,要实现相同的功能,您只需利用低级的密封/解封方法。类似这样的东西(在服务器组件中):
字符串
创建会话可能很棘手,因为您需要在路由处理程序或中间件中使用cookie头设置加密会话。
型
图片来源:https://github.com/vvo/iron-session/issues/594#issuecomment-1638964195