Authing 文档文档
快速开始
概念
使用指南
开发集成 V2 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
快速开始
概念
使用指南
开发集成 V2 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
旧版
开发集成
  • JavaScript SDK 索引
  • 单点登录(SSO)
  • 登录组件 (Guard)

  • 多因素认证组件(MFA)

  • JavaScript / Node.js

  • Java / Kotlin

  • Python

  • C#

  • PHP

  • Go

  • Ruby
  • Delphi
  • Android

  • iOS

  • Flutter

  • 微信小程序
  • 微信网页授权
  • React Native
  • 框架集成

  • Radius
  • 错误代码

¶ React 登录组件

更新时间: 2025-02-18 09:00:47
编辑

本文对应 Authing 老版本产品。如需了解最新功能说明,请查看 将 Guard 接入到 React 项目 (opens new window)。

Authing 登录组件(Guard)是一种可嵌入的登录表单,可根据你的需求进行配置,建议用于单页面应用程序。它使你可以轻松添加各种社会化登录方式,以便你的用户可以无缝登录,并且在不同平台拥有一致的登录体验。Guard 为开发者屏蔽了很多底层认证的实现细节,同时也包括繁琐的 UI 开发。

Guard 可以通过组件化的形式集成到你的 React 项目中,你可以借助此组件快速实现登录认证流程。

查看旧版 react 文档

¶ 对于 React 的支持

我们目前支持 React 16 以及 React 17 版本,对于 React 18 还有一些兼容问题没有解决,我们会尽快完成支持。

¶ 快速开始

¶ 使用 npm

¶ 安装

$ yarn add @authing/react-ui-components

# OR

$ npm install @authing/react-ui-components --save

¶ 初始化

在 React 项目中初始化:

import React from "react";
import ReactDOM from "react-dom";
import { Guard } 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 <Guard appId={appId} onLogin={onLogin} />;
};

ReactDOM.render(<App />, document.getElementById("root"));

¶ 使用 CDN

¶ 使用 CDN 引入

<!-- 引入 babel,支持 jsx -->
<script src="https://cdn.jsdelivr.net/npm/babel-standalone@6.26.0/babel.min.js"></script>

<!-- 引入 React -->
<script src="https://cdn.jsdelivr.net/npm/react@16.14.0/umd/react.production.min.js" crossorigin></script>
<script src="https://cdn.jsdelivr.net/npm/react-dom@16.14.0/umd/react-dom.production.min.js" crossorigin></script>

<!-- JavaScript 代码 -->
<script>
  window.react = React
  window['react-dom']  = ReactDOM
</script>
<script src="https://cdn.jsdelivr.net/npm/@authing/react-ui-components"></script>

<!-- CSS 文件 -->
<link href="https://cdn.jsdelivr.net/npm/@authing/react-ui-components/lib/index.min.css" rel="stylesheet"></link>

¶ 在 Script 代码块中初始化

<script>
  var App = () => {
    const appId = "AUTHING_APP_ID";
    const onLogin = userInfo => {
      console.log(userInfo);
    };
    return <AuthingReactUIComponents.Guard appId={appId} />;
  };

  ReactDOM.render(<App />, document.getElementById("root"));
</script>

¶ 监听登录事件

Guard 组件传入 onLogin 事件回调函数,当用户成功登录时回调用此函数,你可以在此获取当前用户的用户信息。查看完整事件列表。

import { Guard } from "@authing/react-ui-components";
import "@authing/react-ui-components/lib/index.min.css";

function App() {
  return (
    <div className="App">
      <Guard
        appId="AUTHING_APP_ID"
        onLogin={userinfo => {
          console.log(userinfo);
        }}
      />
    </div>
  );
}
了解获取用户信息之后该怎么做?

获取到用户信息之后,你可以得到用户的身份凭证(用户信息的 token 字段),你可以在客户端后续发送给后端服务器的请求中携带上此 token, 以 axios 为例:

const axios = require("axios");
axios
  .get({
    url: "https://yourdomain.com/api/v1/your/resources",
    headers: {
      Authorization: "Bearer ID_TOKEN",
    },
  })
  .then((res) => {
    // custom codes
  });

在后端接口中需要检验此 token 的合法性,来验证用户的身份,验证方式详情请见验证用户身份凭证(token)。识别用户身份之后,你可能还需要对该用户进行权限管理,以判断用户是否对此 API 具备操作权限。

¶ 添加社会化登录

在初始化参数 config 中传入 socialConnections 列表指定需要显示的社会化登录(默认显示该应用配置的所有社会化登录)。

import { Guard, SocialConnections } from "@authing/react-ui-components";

function App() {
  return (
    <div className="App">
      <Guard
        appId="AUTHING_APP_ID"
        onLogin={userinfo => {
          console.log(userinfo);
        }}
        config={{
          socialConnections: [SocialConnections.Github]
        }}
      />
    </div>
  );
}
查看支持的社会化登录列表及接入流程

Authing 目前一共支持国内外将近 20 余种社会化登录,如微信、GitHub、Sign in with Apple、支付宝等,以下是完整的列表:

社会化登录方式使用场景使用文档
PC 微信扫码PC 网站使用文档
微信移动端移动 APP使用文档
微信网页授权微信内网页使用文档
微信公众号关注PC 网站使用文档
微信小程序微信小程序使用文档 (opens new window)
微信 PC 小程序扫码PC 网站使用文档
App 拉起小程序移动 APP使用文档
腾讯 QQPC 网站使用文档
腾讯 QQ 移动端移动 APP使用文档
新浪微博PC 网站使用文档
新浪微博移动端移动 APP使用文档
GitHubPC 网站使用文档
GitHub 移动端移动 APP使用文档
FacebookPC 网站使用文档
Facebook 移动端移动 APP使用文档
TwitterPC 网站使用文档
Twitter 移动端移动 APP使用文档
Google Web 端PC 网站使用文档
Google 移动端移动 APP使用文档
Apple Web 端PC 网站使用文档
Apple 移动端移动 APP使用文档
支付宝 Web 端PC 网站使用文档
支付宝移动端移动 APP使用文档
SlackPC 网站使用文档
Slack 移动端移动 APP使用文档
GiteePC 网站使用文档
GitLabPC 网站使用文档
GitLab 移动端移动 APP使用文档
百度PC 网站使用文档
百度移动端移动 APP使用文档
LinkedInPC 网站使用文档
LinkedIn 移动端移动 APP使用文档
网易易盾(手机号一键登录)移动 APP使用文档
青云 QingCloudPC 网站使用文档
InstagramPC 网站使用文档
抖音移动端移动 APP使用文档
抖音小程序移动 APP使用文档 (opens new window)
快手移动端移动 APP使用文档
小米移动端移动 APP使用文档
Line 移动端移动 APP使用文档

¶ 退出登录

使用 Guard 组件,组件加载完成后回触发的 onLoad 事件与登录成功触发的 onLogin 事件都会返回 AuthClient。获取到 AuthClient 进行手动单例保存,可以在需要调用退出登录的时候使用。

import { Guard, SocialConnections } from "@authing/react-ui-components";

function App() {
  let guardAuthClient

  return (
    <div className="App">
      <Guard
        appId="AUTHING_APP_ID"
        onLogin={(userinfo, authClient) => {
          console.log(authClient)
        }}

        onLoad={(authClient) => {
          console.log(authClient)
          guardAuthClient = authClient
        }}
      />

      {guardAuthClient && <button onClick={() => guardAuthClient.logout()}>退出</button>}
    </div>
  );
}

¶ 实现单点登录

使用 Guard 进行单点登录需要在初始化的时候设置 isSSO 为 true:

import React from "react";
import ReactDOM from "react-dom";
import { Guard } 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 (
    <Guard
      appId={appId}
      onLogin={onLogin}
      config={{
        isSSO: true
      }}
    />
  );
};

ReactDOM.render(<App />, document.getElementById("root"));

¶ 导出 authing-js-sdk

Guard 组件本身基于 Authing JavaScript SDK 进行封装,当你需要进行一些更高级的操作(如管理用户自定义数据、修改用户资料、退出登录)时:

  1. 调用 initAuthClient 初始化 AuthenticationClient,多次调用此函数只会初始化一次。
import { initAuthClient } from "@authing/react-ui-components";

initAuthClient({
  appId: "AUTHING_APP_ID"
});
  1. 之后使用 getAuthClient 获取 AuthenticationClient 实例。
import { getAuthClient } from "@authing/react-ui-components";

const authClient = getAuthClient();
  1. 调用 AuthenticationClient 实例的方法,完整方法列表请见 AuthenticationClient 方法列表。
authClient.getCurrentUser().then(user => console.log(user));

¶ 完整参数

Authing 登录组件(Guard)提供了很多高级配置,如自定义 UI,使用特定登录方式等。详细请见完整参数列表。

¶ 事件列表

注意在 React 中,事件监听应采用小驼峰命名,如:onLogin, onLoginError。

事件名事件说明事件参数事件参数说明
loadAuthing appId 验证通过,加载完成authClientAuthenticationClient 对象,可直接操作 login, register,详情请查看 authing-js-sdk
load-errorAuthing appId 验证失败,加载失败error错误信息
login用户登录成功user, authClient

user: 用户信息

authClient 同上

login-error用户登录失败error错误信息,包含字段缺失/非法或服务器错误等信息
register用户注册成功user, authClient

user: 用户信息

authClient 同上

register-error用户注册失败error错误信息,包含字段缺失/非法或服务器错误等信息
pwd-email-send忘记密码邮件发送成功--
pwd-email-send-error忘记密码邮件发送失败error错误信息
pwd-phone-send忘记密码手机验证码发送成功--
pwd-phone-send-error忘记密码手机验证码发送失败error错误信息
pwd-reset重置密码成功--
pwd-reset-error重置密码失败error错误信息
closemodal 模式中 guard 关闭事件--
login-tab-change登录 tab 切换事件activeTab切换后的 tab
register-tab-change注册 tab 切换事件activeTab切换后的 tab
register-info-completed注册补充成功事件user, udfs, authClient

user: 用户信息

udfs: 补充的自定义字段信息

authClient 同上

register-info-completed-error注册补充失败事件error, udfs, authClient

error: 错误信息

udfs: 补充的自定义字段信息

authClient 同上

¶ 私有化部署

私有化部署场景需要指定你私有化的 Authing 服务的 GraphQL 端点(不带协议头和 Path),如果你不清楚可以联系 Authing IDaaS 服务管理员。

import React from "react";
import { Guard } from "@authing/react-ui-components";
import "@authing/react-ui-components/lib/index.min.css";

const App = () => {
  const appId = "AUTHING_APP_ID";
  const config = {
    host: "https://core.you-authing-service.com"
  };
  return <Guard appId={appId} />;
};

¶ 获取帮助

请访问 Authing 论坛 (opens new window)。

  • 对于 React 的支持
  • 快速开始
  • 导出 authing-js-sdk
  • 完整参数
  • 事件列表
  • 私有化部署
  • 获取帮助

用户身份管理

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

企业内部管理

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

开发者

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

公司

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

京ICP备19051205号

beian京公网安备 11010802035968号

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