根据有关Control Access with Custom Claims and Security Rules的文档,我可以阅读以下示例:
// Set custom user claims on this newly created user.
await getAuth().setCustomUserClaims(user.uid, customClaims);
// Update real-time database to notify client to force refresh.
const metadataRef = getDatabase().ref("metadata/" + user.uid);
// Set the refresh time to the current UTC timestamp.
// This will be captured on the client to force a token refresh.
await metadataRef.set({refreshTime: new Date().getTime()});
是否意味着默认情况下有一个名为metatadata
的Firebase实时数据库表,其中包含有关用户的信息?或者这是一个例子,我可以使用,例如,Firestore集合来存储此信息?
1条答案
按热度按时间m3eecexj1#
该页面中的解决方案使用RealtimeDatabase从更新令牌的服务器端代码向客户机发送一个信号,通知客户机需要刷新其ID令牌。
您显示了服务器端代码,但这是来自同一页面的客户端伴随代码:
因此,这段代码监听
metadata/$uid/refreshTime
路径上的更改,并在该值更改时强制刷新ID标记,因此它始终具有最新的ID标记,并具有服务器端代码设置的最新自定义声明。数据库调用中的
metadata
路径没有什么特别之处,您可以使用任何您喜欢的路径--只要客户端和服务器同意该路径。您还可以使用任何其他机制将更改从服务器发送到客户机。