我正在处理的网站使用 Firebase 身份验证,并且登录的不同用户对于他们可以访问哪些页面具有不同的权限。
登录方式设置类似于这个post :
我遇到的问题是,当他们访问新页面时,我试图将 token 从客户端传递回服务器(几乎与它在 Firebase Doc 中的完成方式相同),验证 token 并检查是否它有权查看网页。
我试图找出最好的(和最安全的)方法来做到这一点。我考虑过以下选项:
我一直在尝试在请求 header 中传递 token ,但据我了解,当用户单击指向不同页面的链接(或者如果它在 javascript 中重定向)时,您无法添加 header 。同样的问题也适用于使用 POST。
当用户单击指向不同页面的链接时,我该怎么做才能安全地将这些信息传递给服务器并检查权限?
最佳答案
您可以通过以下方式在客户端获取 accessToken (idToken):
var accessToken = null;
firebase.auth().currentUser
.getIdToken()
.then(function (token) {
accessToken = token;
});
并将其传递到您的请求 header 中:
request.headers['Authorization'] = 'Bearer ' + accessToken;
并在您的服务器端使用您喜欢的方法获取 token 并使用 Firebase Admin SDK 对请求进行身份验证,例如(Node.js):
firebaseAdmin.auth()
.verifyIdToken(accessToken)
.then(decodedIdToken => {
return firebaseAdmin.auth().getUser(decodedIdToken.uid);
})
.then(user => {
// Do whatever you want with the user.
});
关于authentication - 如何将 Firebase Auth Token 从客户端传递到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43195612/