Authing 文档
文档
快速开始
概念
使用指南
开发集成
应用集成
加入 APN
多租户(内测版)
旧版
快速开始
概念
使用指南
开发集成
应用集成
加入 APN
多租户(内测版)
旧版
使用指南
  • 快速开始

    • 认证你的第一个用户
    • 不同类型应用的接入方式

      • 在传统 Web App 中集成 Authing
      • 在单页应用(SPA)中集成 Authing
      • 在移动端(iOS、Andriod)中集成 Authing
    • 控制台概览
  • 对用户进行认证
  • 对用户进行权限管理
  • 授权
  • 管理用户账号
  • 管理用户目录
  • 同步中心(BETA)
  • 自建应用
  • ASA 表单代填
  • 单点登录 SSO
  • 成为联邦认证身份源
  • 连接外部身份源(IdP)
  • 打通微信生态
  • 迁移用户到 Authing
  • 管理组织机构
  • 自动化
  • 审计日志
  • 配置安全信息

  • 配置用户池信息

  • 部署方案
  • 常见问题 FAQs

    ¶ 在单页应用(SPA)中集成 Authing

    更新时间: 2022-03-22 15:24:16

    单页应用(Single Page Application,简称 SPA)指的是一种 Web 应用或者网站的模型,它通过动态重写当前页面来与用户交互,而非传统的从服务器重新加载整个新页面。这种方法避免了页面之间切换打断用户体验,使应用程序更像一个桌面应用程序。在单页应用中,所有必要的代码(HTML、JavaScript 和 CSS)都通过单个页面的加载而检索,或者根据需要(通常是为响应用户操作)动态加载适当的资源并添加到页面。与单页应用的交互通常涉及到与后端服务器的动态通信。

    在 SPA 应用中接入 Authing 最简单的方式是使用 Authing 提供的内嵌登录组件和 Javascript SDK 来进行登录和认证。本文以 React 项目为例。

    ¶ 获取应用 ID

    登录 Authing 后,Authing 会为你创建一个默认用户池和应用,你也可以自己创建应用,在应用详情中,可以获取应用 ID,点击复制按钮复制即可:

    ¶ 集成 Authing 到你的 SPA 应用

    ¶ 安装 Authing 登录组件

    yarn add @authing/react-ui-components
    
     # OR
    
    npm i @authing/react-ui-components --save
    

    @authing/react-ui-components 中有 Authing 提供的一些 React 组件和获取 AuthenticationClient 的 API,其中就包括 AuthingGuard 登录组件。

    ¶ 配置 AuthingGuard

    import React from 'react'
    import ReactDOM from 'react-dom'
    import { AuthingGuard } from '@authing/react-ui-components'
    // 引入 css 文件
    import '@authing/react-ui-components/lib/index.min.css'
    
    const App = () => {
      const appId = 'AUTHING_APP_ID'
    
      // 登录成功
      const onLogin = (userInfo) => {
        console.log(userInfo)
        // 这里可以重定向到其他页面了
        // ...
      }
    
      return <AuthingGuard appId={appId} onLogin={onLogin} />
    }
    
    ReactDOM.render(<App />, root)
    

    通过传入 appId,AuthingGuard 就可以展示登录框进行登录了。

    ¶ 退出登录

    现在你已经可以登录了,同时需要一个方法使用户登出,可以通过 AuthenticationClient 实现。

    // src/index.js
    
    import { initAuthClient } from '@authing/react-ui-components'
    // 在项目入口文件中初始化 AuthenticationClient
    initAuthClient({
      appId: 'YOUR_APP_ID',
    })
    
    import React from 'react'
    import { getAuthClient } from '@authing/react-ui-components'
    
    const LogoutButton = () => {
      return <button onClick={() => getAuthClient().logout()}>退出</button>
    }
    
    export default LogoutButton
    

    ¶ 获取用户信息

    用户登录后,你可能还需要获取当前登录用户的用户信息。

    // src/index.js
    
    import { initAuthClient } from '@authing/react-ui-components'
    // 在项目入口文件中初始化 AuthenticationClient
    initAuthClient({
      appId: 'YOUR_APP_ID',
    })
    
    import React, { useState, useEffect } from 'react'
    import { getAuthClient } from '@authing/react-ui-components'
    
    const UserInfo = () => {
      const [user, setUser] = useState()
      const [isAuthenticated, setIsAuthenticated] = useState(true)
    
      useEffect(() => {
        getAuthClient()
          .getCurrentUser()
          .then((userInfo) => {
            if (userInfo) {
              setUser(userInfo)
            } else {
              setIsAuthenticated(false)
            }
          })
      }, [])
    
      return isAuthenticated ? (
        user ? (
          <div>
            <img src={user.photo} alt={user.username} />
            <h2>{user.username}</h2>
            <p>{user.email}</p>
          </div>
        ) : (
          <div>Loading...</div>
        )
      ) : (
        <h3>暂未登录</h3>
      )
    }
    
    export default UserInfo
    

    getCurrentUser 能获取当前登录用户的信息,若未登录会返回 null

    上一篇: 在传统 Web App 中集成 Authing 下一篇: 在移动端(iOS、Andriod)中集成 Authing

    本文是否有解决您的问题?

    如果遇到其他问题,你可以在 authing-chat/community 联系我们。

    • 获取应用 ID
    • 集成 Authing 到你的 SPA 应用

    用户身份管理

    集成第三方登录
    手机号闪验 (opens new window)
    通用登录表单组件
    自定义认证流程

    企业内部管理

    单点登录
    多因素认证
    权限管理

    开发者

    开发文档
    框架集成
    博客 (opens new window)
    GitHub (opens new window)
    社区用户中心 (opens new window)

    公司

    服务状态
    15559944612
    sales@authing.cn
    北京市朝阳区北辰世纪中心 B 座 16 层(总)
    成都市高新区天府五街 200 号 1 号楼 B 区 4 楼 406 室(分)

    京ICP备19051205号

    beian京公网安备 11010802035968号

    © 北京蒸汽记忆科技有限公司