关于 auth0-vue
面向 Vue 3 单页应用开发者的 Auth0 集成技能,介绍如何使用 @auth0/auth0-vue 配置基于重定向的登录、受保护路由和 API 令牌调用。
主要功能
- 01集成 @auth0/auth0-vue
- 02配置重定向登录与登出
- 03使用组合式 API 获取认证状态
- 04为 API 调用获取访问令牌
适用场景
- 01为 Vue 3 应用添加登录界面
- 02设置受保护路由
- 03携带令牌调用 API
- 04处理认证加载状态与错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ auth0/ agent-skills --skill auth0-vue安装后在 Claude Code 中输入/auth0-vue确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api.mdintegration.mdsetup.md详细介绍
Auth0 Vue.js 集成
使用 @auth0/auth0-vue 为 Vue.js 3 单页应用添加身份验证。
前提条件
- Vue 3+ 应用(Vite 或 Vue CLI)
- 已配置 Auth0 账户和应用
- 如果尚未设置 Auth0,请先使用
auth0-quickstart技能
不适用场景
- 服务端渲染的 Vue 应用 - 有关 SSR 模式,请参阅 Auth0 Nuxt.js 指南
- Vue 2 应用 - 此 SDK 需要 Vue 3+,请使用旧版 @auth0/auth0-spa-js 封装
- 嵌入式登录 - 此 SDK 使用 Auth0 Universal Login(基于重定向)
- 后端 API 身份验证 - 请改用 express-openid-connect 或 JWT 验证
快速入门工作流
1. 安装 SDK
npm install @auth0/auth0-vue
2. 配置环境
如需通过 Auth0 CLI 自动设置,请参阅设置指南获取完整脚本。
手动设置:
创建 .env 文件:
VITE_AUTH0_DOMAIN=your-tenant.auth0.com
VITE_AUTH0_CLIENT_ID=your-client-id
3. 配置 Auth0 插件
更新 src/main.ts:
import { createApp } from 'vue';
import { createAuth0 } from '@auth0/auth0-vue';
import App from './App.vue';
const app = createApp(App);
app.use(
createAuth0({
domain: import.meta.env.VITE_AUTH0_DOMAIN,
clientId: import.meta.env.VITE_AUTH0_CLIENT_ID,
authorizationParams: {
redirect_uri: window.location.origin
}
})
);
app.mount('#app');
4. 添加身份验证 UI
创建登录组件:
<script setup lang="ts">
import { useAuth0 } from '@auth0/auth0-vue';
const { loginWithRedirect, logout, isAuthenticated, user, isLoading } = useAuth0();
</script>
<template>
<div>
<div v-if="isLoading">Loading...</div>
<div v-else-if="isAuthenticated">
<img :src="user?.picture" :alt="user?.name" />
<span>Welcome, {{ user?.name }}</span>
<button @click="logout({ logoutParams: { returnTo: window.location.origin }})">
Logout
</button>
</div>
<button v-else @click="loginWithRedirect()">
Login
</button>
</div>
</template>
5. 测试身份验证
启动开发服务器并测试登录流程:
npm run dev
详细文档
- 设置指南 - 自动设置脚本(Bash/PowerShell)、CLI 命令、手动配置
- 集成指南 - 受保护的路由、API 调用、错误处理、组合式函数
- API 参考 - 完整的 SDK API、配置选项、组合式函数参考、测试策略
常见错误
| 错误 | 修复方法 |
|---|---|
| 忘记在 Auth0 Dashboard 中添加重定向 URI | 在 Auth0 Dashboard 的 Allowed Callback URLs 中添加应用 URL(例如,http://localhost:3000、https://app.example.com) |
| 使用了错误的环境变量前缀 | Vite 要求使用 VITE_ 前缀,Vue CLI 使用 VUE_APP_ |
| 未处理加载状态 | 渲染依赖身份验证的 UI 前,始终检查 isLoading |
| 将令牌存储在 localStorage 中 | 切勿手动存储令牌 — SDK 会自动安全存储 |
| 未注册 createAuth0 插件 | 必须在挂载应用前调用 app.use(createAuth0({...})) |
| 插件加载前访问身份验证信息 | 将依赖身份验证的代码放在 v-if="!isLoading" 中 |
相关技能
auth0-quickstart- Auth0 基本设置auth0-migration- 从其他身份验证提供商迁移auth0-mfa- 添加多因素身份验证auth0-dpop- 添加 DPoP 设备绑定令牌绑定auth0-cli- 从终端管理 Auth0 资源
快速参考
核心组合式函数:
useAuth0()- 主要身份验证组合式函数isAuthenticated- 响应式检查用户是否已登录user- 响应式用户资料信息loginWithRedirect()- 发起登录logout()- 将用户登出getAccessTokenSilently()- 获取用于 API 调用的访问令牌
DPoP 组合式函数(需要在 createAuth0 配置中设置 useDpop: true — 请参阅 auth0-dpop):
createFetcher(config)- 返回一个支持 DPoP、兼容fetch的函数generateDpopProof(params)- 手动生成 DPoP 证明 JWTgetDpopNonce(id?)- 获取当前存储的 DPoP noncesetDpopNonce(nonce, id?)- 存储服务器签发的 DPoP nonce
常见用例:
参考资料
评论
支持 Markdown