我在客户端设置了Firebase身份验证,在服务器端,我可以使用JWT令牌并解码帐户ID。但是,当我希望在生成页面之前在服务器上对每个页面加载进行身份验证时,这是如何工作的?
在登录或每次加载页面时,我可以简单地将最后一个JWT令牌存储到cookie中,以便我可以在服务器上读取它们吗?除此之外,我不知道我的服务器除了每个链接是AJAX调用之外还有什么其他信息。
答案 0 :(得分:2)
这似乎是唯一的方法,假设您使用firebase auth库来解码和验证服务器上的令牌而不是某种JWT解析库。
Firebase管理员包括解码和验证ID令牌以及外推所有信息的方法。这可以防止cookie伪造,并将firebase auth作为您用户是否经过身份验证的唯一事实来源。
例如(在节点中):
const admin = require("firebase-admin");
admin.initalizeApp({
credential: admin.credential.cert(yourServiceAccountJsonHere),
databaseURL: "http://YOURDATABASE.firebaseio.com/"
});
admin.verifyIdToken("usertokenasastring") //returns a promise
.then(function(decodedToken){
//process the decoded user token somehow
});
Firebase会调用您的数据库,并确保该用户已登录,并且JWT中的所有其他信息都有意义,因此您无需担心实施任何类型的验证服务器端。 / p>