wookoon-cas-sdk

一个用于 Vue 3 的独立认证 SDK,基于 Casdoor/OAuth2
1,119
Install
npm install wookoon-cas-sdk
Latest Version:0.2.10
Vue:3
License:MIT
Last Updated:Sep 14, 2026
Links: GitHub  ·  npm
Maintainer: geekor

Wookoon CAS Sdk

架构总结

┌─────────────┐
│  Vue 前端    │
│  (SDK)      │
└──────┬──────┘
       │ 1. 调用 /api/cas/login-auto 跳转登录 CAS URL
       │ 2. 回调带 code 到前端
       │ 3. 前端调用 /api/cas/callback
       ▼
┌─────────────────────────────────┐
│       Auth Service              │
│  ┌───────────────────────────┐  │
│  │  Casdoor SDK              │  │
│  │  - 用 code 换 token       │  │
│  │  - 解析用户信息            │  │
│  └───────────────────────────┘  │
│  ┌───────────────────────────┐  │
│  │  防腐层 (Adapter)          │  │
│  │  Casdoor User → Standard  │  │
│  └───────────────────────────┘  │
│  ┌───────────────────────────┐  │
│  │  JWT 签发                  │  │
│  │  - 签发业务系统 JWT        │  │
│  └───────────────────────────┘  │
└──────┬──────────────────────────┘
       │ 返回 { token, user }
       ▼
┌─────────────┐
│  Vue 前端    │
│  保存 Token  │
└──────┬──────┘
       │ 后续请求携带 Bearer Token
       ▼
┌─────────────────────────────────┐
│   业务服务 (订单/用户/支付等)      │
│   - 只需验证 JWT 签名            │
│   - 不需要 Casdoor SDK          │
└─────────────────────────────────┘

业务项目使用指南 (如何在你的 Vue 3 项目中接入)

  1. 安装
pnpm add wookoon-cas-sdk@^0.1
  1. 初始化 (main.ts)
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { createEzWookoon } from 'wookoon-cas-sdk'

const app = createApp(App)

createEzWookoon({
  serverUrl: import.meta.env.VITE_SERVER_URL,
  router: router,
})

app.use(router)
app.mount('#app')

在 App.vue 中监听回调

<script setup lang="ts">
import { useRouter } from 'vue-router'
import { useEzWookoonCallback } from 'wookoon-cas-sdk'

const router = useRouter()
useEzWookoonCallback(router)
// ...
</script>
  1. 在组件中使用
<script setup lang="ts">
import { useRouter } from 'vue-router'
import { useEzWookoonAuth } from 'wookoon-cas-sdk'

const router = useRouter()
const { user, isAuthenticated, isLoading, login, logout, profile } = useEzWookoonAuth(router)

function handleLogin() {
  login()
}

function handleLogout() {
  logout()
  router.push('/')
}

function handleMyProfile() {
  profile()
}
</script>

<template>
  <nav>
    <div v-if="isLoading">加载中...</div>
    <template v-else-if="isAuthenticated && user">
      <span>欢迎, <a href="#" @click="handleMyProfile()">{{ user.displayName || user.username }}</a></span>
      &ensp;
      <button @click="handleLogout">退出</button>
    </template>
    <template v-else>
      <button @click="handleLogin">登录</button>
    </template>
  </nav>
</template>
  1. 配合 Axios 自动携带 Token, 支持无痛刷新
import { useEzWookoonRequest } from 'wookoon-cas-sdk';
import { useRouter } from 'vue-router'

const router = useRouter()
const api = useEzWookoonRequest(router)
// ...

api.get('/api/foo/bar').then((r) => {
  // TODO
})
  1. src/env.d.ts
/// <reference types="vite/client" />

interface ImportMetaEnv {
  readonly VITE_SERVER_URL: string
  readonly VITE_API_BASE_URL: string
}

interface ImportMeta {
  readonly env: ImportMetaEnv
}
  1. .env
VITE_SERVER_URL="http://localhost:8080"

Related Packages

casdoor-vue-sdk

Vue client SDK for Casdoor

21,991 16
@tktchurch/auth

Framework-agnostic auth SDK for TKTChurch OAuth/AuthFlow services

2,767
@authup/client-account-console

The Authup account console: a Vue single-page app where users manage their own a...

1,551 41
@authup/client-auth-console

Authup's hosted login, consent, registration, password recovery and device pages...

1,630 41
@authup/client-admin-console

The Authup admin console: a Vue single-page app for managing realms, users, clie...

1,534 41

Version History

Version Released Vue License
0.2.10 ^3.5.42 MIT
0.2.0 ^3.5.40 MIT
0.1.23 ^3.5.40 MIT
0.1.22 ^3.5.40 MIT
0.1.21 ^3.5.40 MIT