【发布时间】:2020-01-28 21:29:04
【问题描述】:
我的应用程序使用服务器端 Firebase 会话 cookie。从登录到注销的一切都是在他们的official way 下实现的。但是,如果我有一段时间不使用该应用程序,会话 cookie 最终会过期。我有两个选择:
- 退出用户并重定向到登录页面
- 通过刷新服务器上的会话 cookie 以静默方式重新验证用户
没有关于选项 1 的问题。如果可能的话,我将如何使用 Firebase 实施选项 2?
- 我唯一拥有的是客户端和服务器上的过期会话cookie。目前,我的服务器有一个中间件,它会返回一个身份验证错误:
export default async (
req,
res,
firebaseAdmin
) => {
const { session } = req.cookies;
if (!session) {
return null;
}
const checkRevoked = true;
return await firebaseAdmin
.auth()
.verifySessionCookie(session, checkRevoked)
.then(decodedClaims => {
return firebaseAdmin.auth().getUser(decodedClaims.uid);
})
.catch(error => {
throw new AuthenticationError(error.message);
});
};
有什么方法可以使用auth/session-cookie-expired 错误消息以静默方式重新验证用户身份?也许我一开始就不应该这样做——因为安全问题——而只选择选项 1。
【问题讨论】:
标签: firebase session cookies firebase-authentication session-cookies