除了正常的客户端 Firebase 身份验证之外,我还尝试为我的 Nextjs 应用程序使用基于 cookie 的身份验证。我在互联网上阅读过,并且遇到过一些像这样的博客https://dev.to/ariburaco/authentication-with-firebase-in-nextjs-with-ssr-e76,这表明我可以做一些事情像这样来实现我的目标:
useEffect(() => {
const unsubscribe = onIdTokenChanged(auth, async (user) => {
if (user) {
setAdmin(user);
const token = await user.getIdToken();
nookies.set(undefined, 'token', token, { path: '/' });
} else {
setAdmin(null);
nookies.set(undefined, 'token', '', { path: '/' });
}
});
return unsubscribe;
}, []);
但是,当我查看 firebase docs 时,我看到了一种完全不同的方法,其中涉及向服务器发送 cookie 请求。此外,firebase 文档在收到 cookie 后将用户注销,以便从存储中清除客户端令牌。这是否意味着您不能同时使用 cookie 和客户端令牌?或者他们这样做的缺点是什么?
最后,哪种方法是“正确的”?各有什么缺点和优点?
非常感谢任何帮助!
如果有人仍在寻找解决方案,您可以使用 firebase-nextjs。它是一个包,通过处理 cookie 和会话管理等内容,帮助将 firebase auth 与 nextjs 集成。