区分Firebase的管理员和普通用户(Xcode ios app)

时间:2018-07-25 14:30:53

标签: ios xcode firebase firebase-authentication

我目前正在开发IOS应用程序,我想做的是在登录应用程序时区分管理员用户和普通用户,因为目前普通用户可以登录并访问管理员选项。我使用Firebase作为数据库,但没有其他选择。任何帮助将非常感激。 这是我的登录代码

@IBAction func loginTapped(_ sender: Any) {

    if let email = emailTextField.text, let password = passwordTextField.text{

        Auth.auth().signIn(withEmail: email, password: password) {(user, error) in

            if let firebaseError = error{
                print (firebaseError.localizedDescription)
                self.showAlert("Invalid Email or Password")

                return
            }
            self.presentLoggedInScreen()
        }
    }
}

我接受是否有人对此文章投反对票,但请在下面评论您这样做的原因。谢谢

2 个答案:

答案 0 :(得分:1)

您需要使用其他方法来实现一些基于角色的身份验证,您可以在此处查看示例以提供一些想法:https://firebase.google.com/docs/auth/admin/custom-claims

答案 1 :(得分:0)

您可以将规则添加到Firebase数据库:

在Firebase控制台上转到数据库,然后单击右侧的“规则”选项卡,并添加以下适用于您的代码的示例之一。

例如,这里每个人都可以访问您的/ foo /路径,但没有人可以写入它:

service cloud.firestore{
    "rules": {
        "foo": {
            ".read": true,
            ".write": false
        }
    }
}

因此,如果您希望确定的用户对某条路径有一定的保留,可以按照以下步骤进行操作:

service cloud.firestore{
    "rules": {
        "users": {
            "$uid": {
                "foo": {
                ".read": true,
                ".write": false
                }
            }
        }
    }
}

或者您可以使用参数来限制foo对特定uid的访问:

"foo":{
  ".read": "auth.uid != null &&
            query.orderByChild == 'owner' && query.equalTo == auth.uid"
}