有人知道这个令牌会在多长时间后过期吗?现在在控制台上没有设置令牌有效期的选项。
signOut()
。它会过期。在登录后一小时后,令牌ID将会过期。如果您尝试验证SDK,则会返回错误“Error: Firebase ID token has expired. Get a fresh token from your client app and try again. See https://firebase.google.com/docs/auth/server/verify-id-tokens 以获取有关如何检索ID令牌的详细信息。”
是否有一种方法可以更改Firebase令牌的过期时间,而不是自定义令牌。
了解其工作原理的任何人都可以回答这个问题。
currentUser.getIdToken()
,但我的问题是它返回一个 Promise :-/ 我不想在我的请求拦截器中进行异步操作... - ProblemsOfSumit如果您仍然感到困惑,这里详细解释了所有内容
如果您的应用程序包括自定义后端服务器,则可以使用ID token与其安全通信,建议这样做。不要使用用户的原始UID发送请求,因为这可能会被恶意客户端轻松欺骗,而是发送用户的ID token, 可以通过Firebase Admin SDK(或者如果Firebase在您选择的语言中没有Admin SDK,则可以使用第三方JWT库)进行验证。为了实现这一点,现代的客户端SDK提供了方便的方法来检索当前已登录用户的ID token。 Admin SDK确保ID token有效,并返回解码后的token,其中包括其所属用户的UID以及添加到其中的任何自定义声明。
firebase.auth().onAuthStateChanged(async user => {
if (user) {
const lastSignInTime = new Date(user.metadata.lastSignInTime);
const lastSignInTimeTimeStamp = Math.round(lastSignInTime.getTime() / 1000);
const yesterdayTimeStamp = Math.round(new Date().getTime() / 1000) - (24 * 3600);
if(lastSignInTimeTimeStamp < yesterdayTimeStamp){
await firebase.auth().signOut()
this.setState({
loggedIn: false
});
return false;
}
this.setState({
loggedIn: true,
user
});
}
})