【问题标题】:Firebase 3.0 session persistanceFirebase 3.0 会话持久性
【发布时间】:2016-09-30 19:41:32
【问题描述】:

在 firebase 3.0 中使用会话持久性似乎是不可能的。

这在以前的版本中是可能的: https://www.firebase.com/docs/web/guide/login/password.html

authWithPassword() 采用可选的第三个参数,它是 包含以下任何设置的对象:

记住 - 字符串
如果未指定 - 或设置为默认值 - 会话是 只要您在 Login & Auth 选项卡中进行了配置,就会持续存在 您的应用程序仪表板。将持久性限制在生命周期内 当前窗口,将其设置为 sessionOnly。 none 的值不会 完全保留身份验证数据,并将尽快结束身份验证 当页面关闭时。

在 3.0 版中没有提到可选的第三个参数: https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithEmailAndPassword

signInWithEmailAndPassword(email, password)
返回 firebase.Promise 包含非空 firebase.User

另外,在新控制台 (https://console.firebase.google.com/) 中,我找不到更改默认持久性的选项。

【问题讨论】:

    标签: session firebase persistence firebase-authentication


    【解决方案1】:

    Firebase Auth JS SDK 现在支持 sessionOnly 持久性。有关更多信息,请查看 https://firebase.google.com/support/release-notes/js#4.2.0https://firebase.google.com/docs/auth/web/auth-state-persistence

    您现在可以在登录之前或之后指定或切换身份验证状态持久性。对于您的情况,您可以指定仅会话持久性,如下所示: firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)

    【讨论】:

    • 虽然链接可能会回答问题,但最好将链接中的必要内容与引用一起添加到此答案中,以便即使没有链接也能将其作为答案。详情请见How to Answer
    • 已添加答案的详细信息。
    【解决方案2】:

    可能还值得一提的是,您需要等待身份验证状态解决。根据文档:

    获取当前用户的推荐方法是在 Auth 对象上设置观察者:

    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        // User is signed in.
      } else {
        // No user is signed in.
      }
    });
    

    链接到此处的文档:https://firebase.google.com/docs/auth/web/manage-users

    【讨论】:

      【解决方案3】:

      在 3.0 中,用户目前始终保持不变,直到调用 signOut()(或用户清除本地存储)。

      【讨论】:

      • 这种行为可以改变吗?我想使用 sessionOnly,除非用户选择记住他的会话......对于将在共享计算机上使用的安全关键应用程序,自动保持会话不是一个好习惯。或者......当会话到期(浏览器关闭时)时,我如何调用 signOut() ?我不认为这是可能的......
      • 目前不支持 web 上的 sessionOnly,但将来有强烈的兴趣支持它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 2011-06-29
      • 2016-04-24
      相关资源
      最近更新 更多