Firebase在客户端授予自定义声明

时间:2018-02-06 16:52:50

标签: javascript firebase firebase-authentication

正如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));
    })
};

1 个答案:

答案 0 :(得分:0)

您无法使用客户端SDK设置自定义声明。这将是一个巨大的安全漏洞,用户可以设置自己通常在服务器上控制的权限。自定义声明只能在服务器上设置,其逻辑不能被恶意客户端操纵。