Authing 知识库
🛠 开发资源🥂 集成案例🔭 常见问题🖥 控制台
3.0.0
3.0.0
  • 欢迎
  • Authing 概述
  • 快速开始
    • 注册 Authing 开发者账号
    • 第一个应用
    • 基础概念
    • 实现单点登录
    • 控制台概览
    • 部署模型和价格
    • 最佳开发实践
    • 我该如何选择 Authing 的技术
  • 进阶指南
    • 理解认证和授权
      • 用户名 - 密码认证
      • 邮箱 - 密码认证
      • 手机 - 验证码认证
      • JWT Token 释义及使用
    • 验证 Token
    • 配置用户权限
    • 迁移老数据进 Authing
    • 错误代码
  • 认证
    • 接入 OAuth 2.0
      • 创建 OAuth 应用
      • 使用 OAuth 授权
    • 接入 OpenID Connect
      • 创建 OIDC 应用
      • 使用 OIDC 授权
      • 理解 OIDC 流程
      • OIDC 常见问题
    • 接入 SAML
      • 创建 SAML Identity Provider 应用
      • 创建 SAML Service Provider 应用
      • 理解 SAML 流程
      • 同时使用 Authing 作为 SP 和 IdP
      • 使用 SAML Identity Provider
        • 在阿里云访问管理中使用
        • 在腾讯云访问管理中使用
        • 在 Auth0 中使用
      • 使用 SAML Service Provider
        • 与 Auth0 SAML IdP 对接
        • 与 SSOCircle SAML IdP 对接
    • 接入 LDAP
      • 配置 LDAP 服务
      • 使用 Authing 的 LDAP 用户目录
    • 接入 Active Directory
  • 社会化登录
    • 接入 Web 端社会化登录
      • GitHub 登录
      • 微信 PC 扫码登录
      • 微信 APP 内网页登录
      • 企业微信(第三方应用)网页授权登录
      • 企业微信(第三方应用)扫码登录
      • 企业微信(企业内部)扫码登录
      • 新浪微博登录
      • 钉钉登录
      • QQ 登录
      • 配置登录授权 Scope
    • 接入移动端社会化登录
      • 微信登录
      • 支付宝登录
    • 接入小程序登录
      • 小程序登录
        • 用户登录凭证(code)最佳实践
      • APP 拉起小程序登录
    • 打通微信账号体系
  • 扫码登录
    • 小程序扫码登录
      • 接入私有化小程序
    • APP 扫码登录
      • 快速接入
      • Web 端 SDK
      • 完整接口列表
      • 自定义配置项
      • 扫码登录原理
  • 移动应用登录
    • 移动应用 SSO
      • 自动检测登录
      • 唤起 App 登录
    • 移动应用身份提供商
  • 授权
    • Authorization 基础概念
      • 什么是基于角色的管理(RBAC)
      • 什么是基于属性的管理(ABAC)
      • 什么是零信任网络
    • Authorization at Authing
    • 接入 RBAC
    • 接入 ABAC
    • 接入组织机构管理
  • 扩展能力
    • 自定义认证流程(Pipeline)
      • 创建你的第一个 Pipeline 函数
      • Pipeline 函数开发指南
      • 应用场景
      • user 对象
      • context 对象
      • 使用环境变量
      • 可用的 Node Modules
      • 如何调试
      • Node SDK
      • GraphQL API
      • 常见问题
      • 私有化部署
    • 使用 Webhook
    • 自定义用户字段
  • 开发资源
    • 开发资源
    • API(GraphQL)
    • Guard for Web
      • 自定义 Guard 的 UI 样式
    • Guard for Mobile
      • Guard for React Native
    • Guard VS 自定义 UI
    • SDK for 单点登录
    • SDK for JavaScript
      • 查询用户权限
      • 绑定社会化登录
      • 自定义用户字段
      • 管理 MFA 口令
      • 自定义请求链接
    • SDK for Node.js
      • 权限控制
      • 查询用户权限
      • 组织机构管理
      • 老版权限控制(deprecated)
      • Pipeline 函数
      • 自定义用户字段
      • 绑定社会化登录
      • 管理 MFA 口令
      • 自定义请求连接
    • SDK for React Native
    • SDK for 微信小程序
    • SDK for Java
    • SDK for Objective-C
    • SDK for Python
    • SDK for Go
    • SDK for PHP
    • 函数计算(FaaS)
  • 通信
    • 邮件
    • SMS
  • MFA
    • 配置 MFA 安全口令
      • 使用 Microsoft Authenticator 添加 MFA 令牌
    • 接入 MFA
  • 安全
    • 配置 Web 安全域
    • 配置用户池密码强度
    • 配置密码加密函数
  • 其他
    • 常见问题
    • 集成案例
      • Authing 与 AWS 集成案例
      • 函数计算与 AaaS 集成案例
      • Odoo 集成案例
      • 社会化登录集成案例
    • 社交互联数据
    • 为 Authing 贡献 SDK
      • 了解 Authing 的模块
Powered by GitBook
On this page
  • 应用开发 —— 从 Authing 开始
  • 开发前准备
  • 学习目标
  • 预备知识
  • 所需工具
  • 第零步:注册 Authing 账号并创建一个应用
  • 第一步:配置一个基本的 HTML 页面和 CSS
  • 第二步:增加登录状态 UI 元素
  • 第三步:增加 Authing 身份认证表单
  • 第四步:监听登录成功事件并显示用户名
  • 第五步:调试登录/注册功能
  • 第六步:为退出按钮增加事件
  • 接下来你可能还需要

Was this helpful?

  1. 快速开始

第一个应用

实现第一个基于 Authing 的应用。

应用开发 —— 从 Authing 开始

本文是一个使用 Authing 开发应用的指南(本文以 Web 端为例),其中包含在后端验证用户合法性的内容,任何开发者都可以阅读本文学习 Authing 的使用方法。

本文使用 Authing 实现一个基于 Web 的登录退出应用,同时为了简单起见,本文不使用任何高级前端框架。

开发前准备

学习目标

  1. 学会在控制台中创建 Authing 应用

  2. 使用 Authing 实现登录和退出

预备知识

  1. 基本的 HTML 和 CSS 知识

  2. 中级 JavaScript 技能

所需工具

  1. 你喜欢的文本编辑器

  2. 可以在本地运行的 Web 服务器(比如:npm install http-server -g)

第零步:注册 Authing 账号并创建一个应用

第一步:配置一个基本的 HTML 页面和 CSS

创建一个空白的 HTML 文档用来编写 Authing 程序:

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>Authing Hello World</title>
  <style>
    .btn {
        background-color: #45bbee;
        border: none;
        border-radius: 4px;
        padding: 5px 10px;
        color: #fff;
    }
    .btn:hover {
        background-color: #45aaff;
        cursor: pointer;
    }
  </style>  
</head>
<body>
  <script src="https://cdn.jsdelivr.net/npm/jquery"></script>
  <script>
      // Custom Codes
  </script>
</body>
</html>

示例中使用了 jQuery。

本教程只是为了演示,因此我们没选择其他更加高级的框架,这可以让我们专注于 Authing 本身。

第二步:增加登录状态 UI 元素

增加一段 HTML 到 HTML 页面中,用处是显示已经登录用户的用户名和完整用户信息(一段 JSON 字符串),并且又一个「退出」按钮可以用来退出。

<div id="logout" style="display: none">
    你已登录,用户名为:<span id="user"></span>。
    <div>
        完整用户信息:
        <code id="userInfo"></code>
    </div>
    <button class="btn" id="logout-btn" style="margin-top:11px">退出</button>
</div>

第三步:增加 Authing 身份认证表单

<script src="https://cdn.jsdelivr.net/npm/@authing/guard@1.9.10/dist/Guard.umd.min.js">
</script>

将脚本文件放到入口脚本之前即可。

使用该库可以生成一个登录表单,其样式如下图所示:

调用方法非常简单,代码如下所示:

const form = new Guard('userPoolId', {
  // 时间戳,不填则默认生成当前时间戳
  timestamp: Math.round(new Date() / 1000),
  // 随机数,不填则默认生成随机数
  nonce: Math.ceil(Math.random() * Math.pow(10, 6)),
  // 设置登录表单标题
  title: '第一个应用', 
  // 小程序扫码登录配置
  qrcodeScanning: {
    redirect: false,
  }
});

所需参数解释如下:

  • timestamp:当前时间戳 Math.round(new Date() / 1000)

  • nonce:一个随机数字,不要超过十位数

  • title: 表单标题。

  • qrcodeScanning

    • redirect: 是否执行跳转(在用户后台配置的 URL),若值为 false,用户数据可通过 .on('authenticated') 监听函数得到.

userPoolId 参数获取方式如下:

第四步:监听登录成功事件并显示用户名

登录成功的事件名称为「authenticated」:

const form = new Guard('userPoolId', {
  // 时间戳,不填则默认生成当前时间戳
  timestamp: Math.round(new Date() / 1000),
  // 随机数,不填则默认生成随机数
  nonce: Math.ceil(Math.random() * Math.pow(10, 6)),
  // 设置登录表单标题
  title: '第一个应用', 
  // 小程序扫码登录配置
  qrcodeScanning: {
    redirect: false,
  }
});

form.on('authenticated', function(user) {
    // 成功登录后的回调事件,参数 user 为用户数据

    localStorage.setItem('userInfo', JSON.stringify(user)); // 存储用户 id 到 localStorage 中
    localStorage.setItem('userId', user._id); // 存储用户 id 到 localStorage 中
    localStorage.setItem('username', user.username); // 存储用户 username 到 localStorage 中
    localStorage.setItem('token', user.token); // 存储用户的 JWT Token 到 localStorage 中

    form.hide(); // 为了简单起见,这里在登录成功后直接隐藏表单,在 React 或 Vue 应用中,你可以执行路由跳转或其他业务

    showLoginStatus(); // 改变 UI 状态,显示用户名和完整的用户 JSON 信息
});

const showLoginStatus = () => {
    $('#logout').show(); // 显示退出按钮
    $('#user').html(localStorage.getItem('username')); // 显示用户名
    $('#userInfo').html(localStorage.getItem('userInfo')); // 显示完整的用户信息
}

第五步:调试登录/注册功能

到第四步为止,恭喜你已经完成了登录和注册功能,现在让我们运行程序体验一下。

调试 Authing 程序需要启动一个 Web 服务器,推荐 http-server,如果你还未安装 http-server,那么请使用下面的命令进行安装:

$ npm install http-server -g

安装完成后请进入项目根目录然后执行以下命令:

$ http-server

如果你看到下列输出(端口可能不同),那么代表已经启动成功:

Starting up http-server, serving ./
Available on:
  http://127.0.0.1:8080
  http://192.168.0.103:8080
Hit CTRL-C to stop the server

现在让我们用浏览器打开 http://127.0.0.1:8080,应该可以看到如下界面:

此时,请先点击「注册」按钮注册一个账户:

登录完成后可以看到如下信息:

登录后能看到此界面表明已经调试成功了。

第六步:为退出按钮增加事件

到上一步,我们完成了登录功能并体验了流程,下面,我们还需要支持退出功能:

退出功能需要用到 authing 对象的 logout 方法,authing 对象需要在 authing-load 事件中获取,代码如下:

form.on('authing-load', async function(authing) {
    // Authing 实例加载成功后的回调函数,参数 authing 为 authing 对象

    // 使用 checkLoginStatus 方法判断当前的登录状态,需要使用 await
    // 如已经登录则隐藏登录框并显示当前的用户信息
    // 这段代码的作用是用户如果已经登录,那么刷新后还可以看到自己的用户信息
    const token = localStorage.getItem('token')
    const result = await authing.checkLoginStatus(token);
    if (result.status) {
        // 隐藏登录框
        form.hide();
        // 显示用户基础信息
        showLoginStatus();
    }
    
    // 使用 jQuery 监听退出按钮的点击事件
    $('#logout-btn').click(async function() {
        // 使用 logout 方法,并传入用户的 userId 进行退出
        await authing.logout(localStorage.getItem('userId'));
        alert('退出成功');
        // 刷新页面,此时可以重新看到登录框
        location.reload();
    });
})

最后,我们来测试下退出功能。

请打开浏览器,刷新页面,点击「退出」,稍等片刻后可以看到页面弹出了下面这个提示:

点击弹出对话框的「OK」或「确认」按钮后可以看到页面重新启用了登录框:

恭喜你,到此为止,你已经学会了如何使用 Authing 开发第一个应用。

若你想要了解更多 Guard 的使用方法,下面有几个链接可供参考:

接下来你可能还需要

使用 Authing 实现单点登录:

学习 Authing 的基础知识以及我们会用到的专业术语:

使用 Authing 实现单点登录:

控制台是你管理所有 Authing 资源的地方,了解 Authing 控制台各模块包含的内容和你可以在控制台中做的事情:

了解 Authing 提供的多种部署模型,以帮助你选择该以怎样的形式部署 Authing:

Previous注册 Authing 开发者账号Next基础概念

Last updated 4 years ago

Was this helpful?

本文的全部代码可以在 上找到,你也可以。

库可以帮助我们快速生成用来验证用户身份的表单,你只需要添加此库的 CDN 就可以使用:

userPoolId:用户池 ID,可从 中。

你可以点击这里。

在 Guard 中,开发者可以使用 .on 方法监听登录成功的事件,。

登录成功的回调事件中会返回登录用户的 userInfo,其中有 JWT Token,点击此处。

若你需要在后端验证 JWT Token 的合法性请。

如果你还不理解什么是 JWT Token 请。

本文的全部代码可以在 上找到,你也可以。

Github
点击这里查看线上 DEMO
注册 Authing 开发者账号
Guard
Authing 控制台
获取
访问 DEMO 网站
完整的事件列表请参考这里
查看 JWT Token 的释义、使用及验证
查看这篇文章
Github
点击这里查看线上 DEMO
Guard Github
Guard 完整初始化参数列表
Guard 完整事件列表
实现单点登录
基础概念
实现单点登录
控制台概览
部署模型和价格
点击这里查看
登录表单
注册成功后点击「登录」便可以登录
退出涉及到网络请求,可能会出现网络延迟,若没立即出现,请等待一下即可看到提示