如Google documentation说,有一种方法可以在客户端执行 HTTP 请求时设置自定义用户声明。
我没有使用管理部分,因为我们只需要在身份验证后授予自定义声明(如果用户没有)。
此部分对我不起作用,并且抛出 405
错误代码。
有人可以帮我解决这个问题吗?
这是我的服务文件中的代码的一部分:
MobileAppNotificationService.prototype.checkClaim = function () {
this.$window.firebase.auth().currentUser.getIdToken().then(_.bind(function (idToken) {
// Parse the ID token.
var payload = JSON.parse(b64DecodeUnicode(idToken.split('.')[1]), DEFAULT_CHARSET);
if (payload['admin']) {
console.log("user has admin claim");
} else {
console.log("user DOES NOT has admin claim");
this.grantAdminAccess(idToken);
}
}, this));
};
MobileAppNotificationService.prototype.grantAdminAccess = function (idToken) {
this.$http.post(databaseUrl + '/setCustomClaims', {idToken: idToken}).then(function (data) {
console.log("token saved!!!");
console.log(JSON.parse(data));
})
};
最佳答案
您无法使用客户端 SDK 设置自定义声明。这将是一个巨大的安全漏洞,用户可以设置自己的权限,而这些权限通常在服务器上进行控制。自定义声明只能在服务器上设置,其逻辑无法被恶意客户端操纵。
关于javascript - Firebase 在客户端授予自定义声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48648093/