首页 > 解决方案 > 如何使用 React 和 Firebase 将注册用户从 domain.com 重定向到 app.domain.com?

问题描述

我构建了两个应用程序 domain.com - 登录页面 + 登录和注册表单。app.domain.com - 应用程序本身。

用户登录后,我使用 window.location 将他重定向到 app.domain.com

但是我没有成功构建可以做的事情:

  1. 检查用户是否有 FBtoken

  2. 将用户重定向到 app.domain.com

  3. 将令牌存储在 app.domain.com

  4. 从 firebase 获取用户

  5. 如果有这样的用户显示应用程序,如果没有重定向回 domain.com

这是 Domain.com 的 App 组件:

import React, { useContext } from 'react'
import { UserContext } from './../UserProvider'
import { Router } from '@reach/router'

import Homepage from './Homepage'
import Signup from './Signup'
import Login from './Login'
import PasswordReset from './PasswordReset'

function Application() {
  const user = useContext(UserContext)   
  return user ? (
    <a href='http://app.domain.com/'>Go to app</a>
  ) : (
    <Router>
      <Signup path='signUp' />
      <Login path='signIn' />
      <PasswordReset path='passwordReset' />
      <Homepage path='/' />
    </Router>
  )
}

export default Application

我想我需要使用cookies来存储FBtoken而不是本地存储......但是,我读到Firebase每小时自动发送一个新的会话tokan,那么我如何用cookies实现它?

我没有添加 app.domain.com 代码,因为它太长了,我不知道要提供什么(contextProvider?App 组件?)请告诉我,我会添加任何必要的内容

感谢帮助者

标签: reactjsfirebase

解决方案


听起来您正在寻找会话 cookie,它可以让您更好地控制身份验证会话的生命周期和其他方面。这样做的一般流程是:

  1. 用户使用常规 Firebase 身份验证提供程序登录。
  2. 您的应用程序代码将用户的 ID 令牌发送到您创建的自定义端点(在您控制的服务器上或 Cloud Functions 中)。
  3. 在此端点中,您验证 ID 令牌,并从中创建一个会话 cookie。
  4. 然后,客户端从其先前的身份验证会话中注销,并使用会话 cookie 进行身份验证。

有关这方面的完整信息,请参阅有关会话 cookie的 Firebase 文档和此博客文章Firebase:为服务器端 Web 应用程序引入会话 cookie


推荐阅读