ios - 在 IOS 和 Firebase 中保存适当用户的登录状态

标签 ios swift firebase firebase-authentication

我在正在开发的应用程序上为不同用户仅使用一个登录屏幕,并且添加了一段代码来保存登录用户,以便用户下次打开应用程序时不必再次登录。但事实上,我有不同的用户,我只能将用户发送到一个 segue。

我尝试添加代码以保持用户登录状态,但是如果我使用另一个用户登录,它会将用户发送到与以前相同的 View Controller 。这是我尝试过的:

    override func viewDidAppear(_ animated: Bool) {
        if Auth.auth().currentUser != nil {
            // User is signed in.
            performSegue(withIdentifier: "studentSegue", sender: self)
        } else {
            // No user is signed in.
            return
        }
    }

我试图让不同用户保持登录状态,但我不确定要使用什么代码。为了区分登录页面上的用户,我使用 switch case 来查找用户“类型”并登录。但我想让适当的用户保持登录状态。任何帮助将不胜感激

编辑:我想说的是,如果两个人使用不同的手机尝试登录,假设学生(手机 A)和老师(手机 B)他们应该只登录一次,而不必在关闭时再次登录应用程序。但我的登录“PerformSegue”只能让我显示“studentSegue”

最佳答案

让我重述一下问题

在我的应用程序中,我有两种不同类型的用户:学生和教师。当学生登录或重新启动应用程序时,它应该通过 segue 将他们带到学生部分。当教师登录或重新启动应用程序时,应该通过 segue 将他们带到教师部分。

一些事情

Firebase 没有用户类型,只有用户 - 对于 Firebase,每个用户都与其他用户相同。您的应用代码和结构决定了差异。

一种解决方案是在应用启动时询问 Firebase 是什么类型的用户。这是一些通用代码:

override func viewDidAppear(_ animated: Bool) {
    if Auth.auth().currentUser != nil {
        let uid = currentUser.uid
        let thisUserRef = fbRoot.child("users").child(uid)
        thisUserRef.observeSingleEvent(..... {
           let userType = //get userType from snapshot
           if userType == "student" {
              performSegue(withIdentifier: "studentSegue", sender: self)
           } else {
              performSegue(withIdentifier: "teacherSegue", sender: self)
           }
        }

    } else {
        // No user is signed in.
        return
    }
}

另一个选项是将 userType 存储在 userDefaults 中。因此,如果用户经过身份验证,请从默认值中获取用户类型并执行适当的转场。由于安全原因,我不太喜欢这种方法,但它确实可行。

关于ios - 在 IOS 和 Firebase 中保存适当用户的登录状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55725756/

相关文章:

iOS 促销代码和应用程​​序更新

ios - UIImage用户信息

iOS - 在一个阅读 session 中同时获取 NFCTag 硬件 ID 和 NDEF 消息

firebase - 在物理设备上测试时,应用崩溃

ios - 了解 iOS 中的 View 层次结构

ios - 从 iOS + Bonjour 使用 Google Oauth2 webflow(赞!)

ios - 两个按钮。彼此之上。在整个屏幕上

IOS:带有半径的 UIImageView 边框白色在 4 个角显示一条奇怪的黑线

node.js - 使用 Firebase Cloud Functions 扇出数据

firebase - 如何使用 vue 和 vuefire 加载 firebase 数据?