正如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));
})
};
答案 0 :(得分:0)
您无法使用客户端SDK设置自定义声明。这将是一个巨大的安全漏洞,用户可以设置自己通常在服务器上控制的权限。自定义声明只能在服务器上设置,其逻辑不能被恶意客户端操纵。