将你自己的登录界面引入 Logto Cloud
本教程将指导你创建并部署你自己的定制登录界面到 Logto Cloud。
背景
Logto 提供了一个开箱即用的登录体验界面,涵盖了所有 Logto 功能,包括登录、注册、密码恢复、单点登录 (SSO) 等。 用户还可以使用我们的“自定义 CSS”功能自定义登录体验界面的外观和感觉。
然而,一些用户仍然希望深度定制他们的登录体验(包括界面和身份验证流程),以匹配他们的品牌和特定业务需求。 我们听到了你的需求!我们非常兴奋地宣布,“Bring your own UI” 功能现在已在 Logto Cloud 中可用。
在本教程中,我们将指导你如何创建并将你自己的定制登录界面部署到 Logto Cloud。
前提条件
在你开始之前,请确保你具备以下条件:
- 拥有一个 Logto Cloud 账号,并有订阅计划
- 一个已集成 Logto 的应用程序(快速入门)
- 安装了 Logto tunnel CLI
- 具备 HTML、CSS 和 JavaScript 的基本知识
为了简单起见,我们将在以下步骤中使用经典的“用户名 & 密码”登录方法。记得在 Logto 控制台中更改你的登录方法。
创建你的定制登录界面
登录界面的最低要求是拥有一个 index.html
文件,其中 包含一个登录表单,至少要有一个用户名输入框、一个密码输入框和一个提交按钮。
我使用 ChatGPT 生成了一个示例 HTML,结果得到了这个粉嫩可爱的登录页面。
为了简单起见,我省略了 CSS 样式,这里是简单的 HTML 代码:
你也可以从你喜欢的前端框架,如 Create React App、Next.js 或 Vue CLI 的模板开始。
由于 Logto 是开源的,另一个推荐的方式是克隆 Logto Experience 项目,并根据你的需求修改代码。这是由 React 和 TypeScript 编写的 Logto 内置完整功能的登录体验界面。
设置 Logto tunnel CLI
Logto tunnel CLI 是一个不仅能为你的 HTML 页面提供服务,还可以让你在本地开发环境中与 Logto 的体验 API 进行交互的工具。
假设你的 index.html
页面位于 /path/to/your/custom-ui
,并且你的 Logto tenant ID 是 foobar
,你可以这样运行命令:
或者,如果你正在使用一个带有内置开发服务器的 UI 框架,并且你的页面在 http://localhost:4000
提供服务,你可以这样运行命令:
运行命令后,隧道服务将在本地机器的 http://localhost:9000/
启动。
从你的应用触发登录
前往你之前创建的应用,并在 Logto SDK 配置中将 Logto 端点从 https://foobar.logto.app/
更改为 http://localhost:9000/
。
以我们的 React 示例项目为例:
在你的应用程序中点击“登录”按钮。你应该会被重定向到你自定义的登录页面,而不是看到内置的 Logto 登录界面。
与 Logto Experience API 的交互
在此步骤中,我们将在你的自定义界面中与 Logto Experience API 进行交互。首先,让我们创建一个 script.js
文件,并在你的 index.html
中添加引用。
将以下代码放入你的 script.js
文件中。
此脚本将借助这些 API 完成用户名和密码登录流程:
PUT /api/experience
- 启动登录交互POST /api/experience/verification/password
- 验证用户名和密码POST /api/experience/identification
- 为当前交互识别用户POST /api/experience/submit
- 提交登录交互
更多详情请参阅 Logto Experience API 文档。
测试你的自定义登录页面
- 打开你的应用,点击“登录”按钮。
- 你应该会被重定向到你的自定义登录页面
http://localhost:9000/
。 - 输入用户名和密码,然后点击“提交”按钮。
- 如果一切设置正常,你应该会被重定向回你的应用,并显示已验证的用户信息。
将你的定制登录界面部署到 Logto Cloud
一旦你在本地完成了自定义登录界面的开发和测试,你可以将其部署到 Logto Cloud。 只需创建一个包含自定义界面的 zip 文件,并将其上传到 Logto 控制台的“自定义 UI”部分。
上传后保存更改,你的自定义登录界面将在你的 Logto Cloud 租户中上线,取代内置的 Logto 登录体验。
最后,回到你的应用程序,并将端点 URI 改回你的 Logto cloud 端点: https://foobar.logto.app/
。
这次,你可以停止 Logto 隧道服务,现在你的应用程序将直接与线上托管的自定义界面配合工作。
结论
在本教程中,我们逐步介绍了如何将自定义登录界面实现并部署到 Logto Cloud。
通过这个功能,你现在可以深度定制你的登录界面和身份验证流程,以匹配你的品牌和特定业务需求。
祝编码愉快! 🚀