Firebase登录但CustomToken未过期?
问这个我觉得很愚蠢,但我还是要问 我还是firebase的新手,现在尝试使用signInWithCustomToken以管理员身份编辑我的用户数据 这是我的firebase数据库实时规则Firebase登录但CustomToken未过期?,firebase,firebase-admin,Firebase,Firebase Admin,问这个我觉得很愚蠢,但我还是要问 我还是firebase的新手,现在尝试使用signInWithCustomToken以管理员身份编辑我的用户数据 这是我的firebase数据库实时规则 { "rules": { ".read": "auth != null", "users": { "$user_id": { ".read": true,
{
"rules": {
".read": "auth != null",
"users": {
"$user_id": {
".read": true,
".write": "$user_id == auth.uid"
}
}
}
}
这是我的客户端(?)代码,我使用ajax向CI控制器发送用户名和密码,然后控制器将从那里向nodejs发送值
$.ajax({
type: "POST",
url: "Umum/senddata/"+user+"/"+pass
}).done(function( msg ) {
firebase.auth().signInWithCustomToken(msg).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode === 'auth/invalid-custom-token') {
alert('The token you provided is not valid.');
} else {
console.error(error);
}
});
})
});
这是我的节点js代码。首先,我需要检查firebase中是否存在用户名,然后获取UID以创建customtoken,然后将customtoken发送回客户端
app.post('/sendata', function(req, res) {
var content = req.body;
admin.database().ref('/admins').orderByChild('username').equalTo(content.username).once('value').then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
admin.auth().createCustomToken(childSnapshot.val().adminuid).then(function(customToken) {
console.log("customtoken : " + customToken);
//to-do: forward the message to the connected nodes.
res.end(customToken);
admin.auth().verifyIdToken(customToken).then(function(decodedToken) {
var uid = decodedToken.uid;
console.log("uidnya : " + uid);
// ...
}).catch(function(error) {
// Handle error
});
}).catch(function(error) {
console.log("Error creating custom token:", error);
});
});
});
});
现在的问题是,人们说代币将在1小时后过期。
他们所说的过期是什么意思?过期后,他们不能编辑用户数据或什么?
因为我的仍然可以工作,我仍然能够编辑我的用户数据,即使在1小时后没有重新登录。
或者我的带有CustomToken的登录错误?
但我尝试了console.log,它返回了我用来登录的正确用户
如果令牌过期,会发生什么 您将自定义标记与ID标记混淆 返回到客户端的自定义令牌在一小时后过期。通常情况下,这很好,因为您只需要将它与
signInWithCustomToken
一起使用一次。这将在客户端登录用户。作为交换,Firebase身份验证服务器将返回Firebase ID令牌和刷新令牌,并将其存储在客户端上(Firebase ID令牌用于检查用户是否经过身份验证并访问Firebase实时数据库/Firestore/等)。这就是您称之为的verifyIdToken
on。Firebase ID令牌将在一小时后过期,但Firebase刷新令牌将允许客户端在过期时刷新该ID令牌