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

标签 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));
    })
};

最佳答案

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

关于javascript - Firebase 在客户端授予自定义声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48648093/

相关文章:

javascript - appendChild() 动态添加图片到特定的div

ios - Firebase 崩溃报告与 Crashlytics/Fabric

swift - 来自 Firebase 的图像未显示在 TableView 单元格中 [Swift]

android - 数据库错误 : Permission denied firebase

node.js - Firebase 身份验证与云 sql 混合

Javascript 表单验证 |设置特定的输入格式

JavaScript 获取内容框的大小

javascript - 如何将字符串转换为 DOM 并在其中进行选择

firebase - 我可以使用 firebase 和 react-native 验证电话号码吗?

java - 在 Firebase 中仅下载部分数据库引用?