为你的 React 应用添加认证 (Authentication)
本指南将向你展示如何将 Logto 集成到你的 React 应用中。
提示
- 示例项目可在我们的 SDK 仓库 中找到。
- 教程视频可在我们的 YouTube 频道 上观看。
前提条件
- 一个 Logto Cloud 账户或一个 自托管 Logto。
- 在 Logto Console 中创建的单页应用 (SPA)。
- 一个 React 项目。
安装
通过你喜欢的包管理器安装 Logto SDK:
- npm
- pnpm
- yarn
npm i @logto/react
pnpm add @logto/react
yarn add @logto/react
集成
初始化 Logto 提供程序
将 LogtoProvider
导入并用于为你的应用提供一个 Logto 上下文:
App.tsx
import { LogtoProvider, LogtoConfig } from '@logto/react';
const config: LogtoConfig = {
endpoint: '<your-logto-endpoint>', // 例如 http://localhost:3001
appId: '<your-application-id>',
};
const App = () => (
<LogtoProvider config={config}>
<YourAppContent />
</LogtoProvider>
);
配置重定向 URI
在我们深入细节之前,这里是终端用户体验的快速概述。登录过程可以简化如下:
- 你的应用调用登录方法。
- 用户被重定向到 Logto 登录页面。对于原生应用,将打开系统浏览器。
- 用户登录并被重定向回你的应用(配置为重定向 URI)。
关于基于重定向的登录
- 此认证 (Authentication) 过程遵循 OpenID Connect (OIDC) 协议,Logto 强制执行严格的安全措施以保护用户登录。
- 如果你有多个应用程序,可以使用相同的身份提供商 (IdP)(日志 (Logto))。一旦用户登录到一个应用程序,当用户访问另一个应用程序时,Logto 将自动完成登录过程。
要了解有关基于重定向的登录的原理和好处的更多信息,请参阅 Logto 登录体验解释。
备注
在以下代码片段中,我们假设你的应用程序运行在 http://localhost:3000/
。
配置重定向 URI
切换到 Logto Console 的应用详情页面。添加一个重定向 URI http://localhost:3000/callback
。
就像登录一样,用户应该被重定向到 Logto 以注销共享会话。完成后,最好将用户重定向回你的网站。例如,添加 http://localhost:3000/
作为注销后重定向 URI 部分。
然后点击“保存”以保存更改。
处理重定向
由于我们使用 http://localhost:3000/callback
作为重定向 URI,现在我们需要正确处理它。
首先,让我们创建一个回调页面:
pages/Callback/index.tsx
import { useHandleSignInCallback } from '@logto/react';
const Callback = () => {
const { isLoading } = useHandleSignInCallback(() => {
// 完成后执行某些操作,例如重定向到主页
});
// 当它正在处理中
if (isLoading) {
return <div>正在重定向...</div>;
}
return null;
};
最后插入下面的代码来创建一个不需要认证 (Authentication) 的 /callback
路由:
App.tsx
// 假设使用 react-router
<Route path="/callback" element={<Callback />} />