我有一个使用Firebase的项目,其中我使用Firebase ID令牌来验证后端的用户。
实际上,在客户端上,当用户登录时,我使用getIdToken(true)
并将其附加到我的请求标头中。
在服务器上,对于每个请求,我使用verifyIdToken
来检查用户是否登录并且有效。
问题是令牌在一段时间后失效,后端无法验证用户。
我的问题是:如何获得这项工作?
我考虑使用客户端的请求拦截器来获取每个请求的ID令牌,但我不知道这是否是一种好习惯,是否也必须使用admin.auth().revokeRefreshTokens(userId)
使其他令牌无效。
预先感谢。
客户
axios.interceptors.request.use(function (config) {
if (!firebase.auth().currentUser) {
return config
}
return firebase.auth().currentUser.getIdToken(true).then(token => {
config.headers.Authentication = token
return config
})
}, function (error) {
// Do something with request error
return Promise.reject(error)
})
服务器
let decodedToken = await admin.auth().verifyIdToken(token);
let userId = decodedToken.uid;