實戰:整合授權系統

Vibe Prompt

「幫我用 Supabase + Next.js 建立完整授權系統:Google 登入、RBAC 權限、Middleware 保護。」

完整範例

// middleware.ts
import { createMiddlewareClient } from '@supabase/auth-helpers-nextjs'
import { NextResponse } from 'next/server'

// 需要登入的路由
const protectedRoutes = ['/dashboard', '/courses/*']
const adminRoutes = ['/admin', '/admin/*']

export async function middleware(req) {
  const res = NextResponse.next()
  const supabase = createMiddlewareClient({ req, res })
  const { data: { session } } = await supabase.auth.getSession()
  
  const path = req.nextUrl.pathname
  
  // 保護路由
  if (protectedRoutes.some(p => path.match(p))) {
    if (!session) {
      return NextResponse.redirect(new URL('/login', req.url))
    }
  }
  
  // 管理員路由
  if (adminRoutes.some(p => path.match(p))) {
    const { data: { user } } = await supabase.auth.getUser()
    const role = user?.user_metadata?.role
    if (role !== 'admin') {
      return NextResponse.redirect(new URL('/dashboard', req.url))
    }
  }
  
  return res
}

// dashboard/page.tsx
import { createServerClient } from '@/utils/supabase/server'

export default async function DashboardPage() {
  const supabase = createServerClient()
  const { data: { user } } = await supabase.auth.getUser()
  
  // 從 user_metadata 取得角色
  const role = user?.user_metadata?.role || 'viewer'
  
  return (
    <div>
      <h1>Dashboard</h1>
      <p>歡迎, {user?.email}</p>
      <p>角色: {role}</p>
      {role === 'admin' && <AdminPanel />}
      {role === 'editor' && <EditorPanel />}
    </div>
  )
}

課程總結

IAM 課程完成!

  • ✅ OAuth 2.0 / OIDC
  • ✅ RBAC / ABAC
  • ✅ Session 管理
  • ✅ PKCE 流程
  • ✅ 完整授權系統

關鍵要點

  • ✅ 請根據本章主題補充具體的學習重點
  • ✅ 建議加入比較表格、程式碼範例或流程圖
  • ✅ 確保內容扎實且有價值


整合授權系統:讓一切運作起來

你已經學了 IAM 基礎、RBAC/ABAC、Session Management、OAuth PKCE。現在是時候把一切整合起來了。

一個完整的授權系統包含以下層級:

使用者請求
    │
    ▼
1️⃣ 認證層(Authentication)
   ├── 密碼登入(Bcrypt 雜湊)
   ├── OAuth 第三方登入(Google、LINE)
   └── MFA / TOTP 雙因素驗證
    │
    ▼
2️⃣ Session 層
   ├── Session Token(資料庫 Session)
   └── JWT Token(無狀態 API 授權)
    │
    ▼
3️⃣ 授權層(Authorization)
   ├── RBAC 角色權限檢查
   └── ABAC 屬性權限檢查
    │
    ▼
4️⃣ API 層
   ├── Rate Limiting(速率限制)
   ├── CORS 跨域設定
   └── 請求驗證(Validation)
    │
    ▼
5️⃣ 資料層
   ├── Row Level Security(RLS)
   └── 資料庫加密

IAM 課程總結

| 章節 | 主題 | 核心概念 | |:----:|:----:|:--------:| | 1 | IAM 基礎 | User、Group、Role、Policy | | 2 | RBAC vs ABAC | 角色 vs 屬性權限控制 | | 3 | Session Management | JWT vs Session、攻擊防禦 | | 4 | OAuth PKCE | 原生 App / SPA 認證流程 | | 5 | 整合授權系統 | 完整認證授權架構 |

你現在已經具備了從零建立一個完整認證與授權系統的能力——從使用者註冊到 API 權限檢查,從 Session 管理到 OAuth 第三方登入。

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!