實戰:整合授權系統
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 第三方登入。