Firebase数据库身份验证Swift

时间:2018-11-16 12:26:23

标签: swift firebase firebase-realtime-database firebase-security-rules

我通过Firebase实现了身份验证的登录和注册视图。那我该如何验证我的数据库?我更改了规则,然后输入:

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

我还编写了用于获取用户UID的代码,但是如何对我的数据库进行身份验证?

PS:我需要Swift中的示例。

2 个答案:

答案 0 :(得分:1)

雨燕5 仅用于身份验证,然后使用您自己的代码进行扩展

 let credential = PhoneAuthProvider.provider().credential(
        withVerificationID: FireBaseverficationID,
        verificationCode: "your device code")

 let defaults = UserDefaults(suiteName: "group.Company.AppName")
 let encodedData = NSKeyedArchiver.archivedData(withRootObject: credential)
    defaults?.set(encodedData, forKey: "firebasecredential")

在扩展文件中将此内容解码后,将此默认值解码并使用凭据进行登录

let decoded = UserDefaults(suiteName: "group.Company.AppName")?.object(forKey: "firebasecredential") as! Data
    let credential = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! PhoneAuthCredential

//MARK: - If user already login with credential
    let userid = Auth.auth().currentUser
    if userid == nil{
        Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
            if error != nil {

                return
            }
            else
            {
                //MARK:- Your desire code After Login
            }
        }
    }else{
        //MARK:- Your desire code if User already Login
    }

答案 1 :(得分:0)

尝试以下格式:

云Firestore

  service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

实时数据库

//检查auth uid等于数据库节点uid

//换句话说,用户只能访问自己的数据

{
  "rules": {
    "users": {
       "$uid": {
         ".read": "$uid === auth.uid",
         ".write": "$uid === auth.uid"
       }
     }
   }
}