身份验证状态持久性未按预期工作 ReactJS

Posted

技术标签:

【中文标题】身份验证状态持久性未按预期工作 ReactJS【英文标题】:Authentication State Persistence not working as expected ReactJS 【发布时间】:2018-08-01 03:18:24 【问题描述】:

我正在开发一个带有 firebase 的 ReactJS 应用程序,但我的身份验证持久性没有按预期工作。在开发过程中,它在我的浏览器中运行良好,但是当我将它部署到 Firebase 托管时,它不会在我的网络浏览器和移动浏览器中保存我的身份验证状态。

import * as firebase from 'firebase'
export function signIn(e)  e.preventDefault(); auth.signOut()
  auth.setPersistence(firebase.auth.Auth.Persistence.LOCAL).then(function() 
    return auth.signInWithEmailAndPassword(email, pass).then(() =>  
        .....
    ).catch(err => 
        if (err.code === 'auth/wrong-password') ... 
        else   alert(err.message) 
    )
  )


我正在使用 onAuthStateChanged 让用户登录。

auth.onAuthStateChanged(() => 
        if (auth.currentUser)
            ....    
    )  

我强制持久化到LOCAL,知道这是默认设置,但即使它像session 一样工作。我已经阅读了文档Auth Persistence Docs,但是持久性没有按应有的方式工作。经 androidios 和 Web 测试,身份验证状态不持久。

这是 Firebase 托管问题吗?

【问题讨论】:

***.com/questions/47134906/… 我正在使用身份验证状态更改来让用户登录。这不是问题 也许这有帮助:robinwieruch.de/react-firebase-auth-persistence 【参考方案1】:

Firebase SDK 默认将身份验证持久性设置为“本地”。 如果您在加载应用程序时使用onAuthStateChanged,则问题可能是 Firebase SDK 无法使用刷新令牌刷新 idToken。为了刷新令牌,SDK 使用令牌服务 API。通过转到 Google Cloud Platform 控制台检查您的 Firebase 项目的 API 密钥是否可以访问令牌服务 API。我之前也遇到过类似的问题,问题是我在 Google Cloud 平台中对 API 密钥进行了限制。

【讨论】:

以上是关于身份验证状态持久性未按预期工作 ReactJS的主要内容,如果未能解决你的问题,请参考以下文章

身份服务器 4 中的静默令牌更新,js 客户端应用程序未按预期工作

Spring Security 配置 anyRequest().authenticated() 未按预期工作

ReactJS Firebase 在 Context API 全局状态下经过身份验证的用户集,但值只能通过空检查获得?

Oauth2 安全配置匹配器请求过滤未按预期工作

护照身份验证 req.isAuthenticated 始终为 false

Fusion Auth /api/jwt/issue api 未按预期工作