Community生產力與協作github.com

auth0/auth0-react

在 React 應用程式中加入登入、登出、使用者工作階段及受保護路由等驗證功能時使用 - 整合 @auth0/auth0-react SDK,支援 Vite 或 Create React App 的單頁應用程式

auth0-react 是什麼?

此技能旨在協助開發者在 React 應用程式中實作 Auth0 驗證流程,涵蓋登入、登出、使用者工作階段管理及受保護路由。它整合了官方的 @auth0/auth0-react SDK,專為使用 Vite 或 Create React App 建構的單頁應用程式 (SPA) 而設計。透過此技能,開發者可以快速設定 Auth0 的驗證中介軟體,利用 React Context 提供使用者狀態,並保護特定路由以避免未授權存取。其運作方式依據 SKILL.md 文件中的指引,包含安裝必要的 npm 套件、設定 Auth0 領域 (domain) 與用戶端 ID、以及使用 `Auth0Provider` 元件包裹應用程式根結構。這讓開發者能專注於應用邏輯,而無需從頭實作複雜的 OAuth 2.0 / OpenID Connect 流程。支援的平台包括 React (SPA) 搭配現代建構工具。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/auth0/agent-skills/tree/main/skills/auth0-react

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

auth0-react 是做什麼的?

在 React 應用程式中加入登入、登出、使用者工作階段及受保護路由等驗證功能時使用 - 整合 @auth0/auth0-react SDK,支援 Vite 或 Create React App 的單頁應用程式。

安裝

npm install @auth0/auth0-react

設定

在您的 Auth0 應用程式儀表板中,確保已設定好正確的允許回呼 URL、允許登出 URL 及允許的 Web 來源,例如:

  • http://localhost:5173 (Vite 預設)
  • http://localhost:3000 (Create React App 預設)

使用方式

1. 使用 Auth0Provider 包裹應用程式

將 Auth0Provider 加入應用程式根元件,並傳入您的 Auth0 領域 (domain) 與用戶端 ID (clientId):

import React from 'react';
import { Auth0Provider } from '@auth0/auth0-react';

const App = () => {
  return (
    <Auth0Provider
      domain="YOUR_AUTH0_DOMAIN"
      clientId="YOUR_AUTH0_CLIENT_ID"
      authorizationParams={{
        redirect_uri: window.location.origin
      }}
    >
      <MyApp />
    </Auth0Provider>
  );
};

2. 登入與登出

使用 useAuth0 hook 取得驗證狀態及方法:

import React from 'react';
import { useAuth0 } from '@auth0/auth0-react';

const LoginButton = () => {
  const { loginWithRedirect } = useAuth0();
  return <button onClick={() => loginWithRedirect()}>登入</button>;
};

const LogoutButton = () => {
  const { logout } = useAuth0();
  return (
    <button onClick={() => logout({ logoutParams: { returnTo: window.location.origin } })}>
      登出
    </button>
  );
};

3. 存取使用者資訊

透過 user 物件取得使用者資料:

const { user, isAuthenticated } = useAuth0();

if (isAuthenticated) {
  console.log(user); // 包含使用者資訊
}

4. 保護路由

建立一個 ProtectedRoute 元件來限制未驗證使用者的存取:

import React from 'react';
import { Navigate } from 'react-router-dom';
import { useAuth0 } from '@auth0/auth0-react';

const ProtectedRoute = ({ children }) => {
  const { isAuthenticated, isLoading } = useAuth0();

  if (isLoading) {
    return <div>載入中...</div>;
  }

  return isAuthenticated ? children : <Navigate to="/login" />;
};

然後在路由中使用:

<Route path="/profile" element={<ProtectedRoute><Profile /></ProtectedRoute>} />

其他資源

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能