我正在使用firebase auth,但在如何管理不同应用程序之间的身份认证方面有些困惑,特别是nextjs(也使用express的主站点)api和react app(是一种仪表板)。在阅读了一些文档之后,我做了什么(但是我不确定是正确的方法)是使用客户端库在主站点上获取idToken:
firebase
.auth()
.signInWithEmailAndPassword(email, password)
.then(() => {
const currentUser = firebase.auth().currentUser.getIdToken();
currentUser.then(idToken => {
return axios.post("/auth/login", { idToken });
});
});
并请求nextjs / express创建cookie会话:
firebase
.auth()
.createSessionCookie(idToken, { expiresIn })
.then(
sessionCookie => {
res.cookie("session", sessionCookie, {
maxAge: expiresIn,
httpOnly: true
});
return res.end(JSON.stringify({ status: "success" }));
},
error => res.status(401).send(error)
);
然后,当我需要向api发送请求时,我将传递保存在cookie中的idtoken,并在中间件中验证令牌
const userInfo = await firebase.auth().verifySessionCookie(authToken);
我还没有实现react应用,但是我认为我将仅使用客户端库来完成所有工作。...我的主要怀疑是nextjs / express和api之间的身份验证,不知道sessioncookie中的us是否合适...我是否只需要发送tokenId而不是session cookie?你有什么建议吗?