在 Vue.js 3 中添加身份验证(登录、注销、用户会话、受保护路由),集成 @auth0/auth0-vue SDK,配合 Vite 使用。
Auth0 Vue.js 集成.是一项面向实际任务的技能,主要用于Add认证到 Vue.js 3 单页应用程序,使用@auth0/auth0-vue.;Prererequisites.;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
使用 @auth0/auth0-vue 为 Vue.js 3 单页应用(SPA)添加身份认证功能。
auth0-quickstart 技能完成基础设置@auth0/auth0-spa-js 封装器express-openid-connect 或 JWT 校验方案npm install @auth0/auth0-vue
如需通过 Auth0 CLI 自动化配置,请参阅《Setup Guide》获取完整脚本。
如需手动配置:
创建 .env 文件:
VITE_AUTH0_DOMAIN=your-tenant.auth0.com VITE_AUTH0_CLIENT_ID=your-client-id
更新 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');
创建登录组件:
加载中...欢迎,{{ user?.name }}
启动开发服务器并测试登录流程:
npm run dev
| 错误 | 修复方法 |
|---|---|
| 未在 Auth0 控制台中添加重定向 URI(Redirect URI) | 在 Auth0 控制台的 “Allowed Callback URLs” 中添加你的应用地址(例如:http://localhost:3000、https://app.example.com) |
| 环境变量前缀使用错误 | Vite 要求使用 VITE_ 前缀;Vue CLI 则使用 VUE_APP_ 前缀 |
| 未处理加载状态 | 在渲染依赖认证状态的 UI 前,务必检查 isLoading 状态 |
| 将令牌(tokens)存入 localStorage | 切勿手动存储令牌 —— SDK 已自动实现安全存储机制 |
遗漏 createAuth0 插件注册 |
必须在调用 app.mount() 之前执行 app.use(createAuth0({...})) |
| 在插件加载完成前访问认证状态 | 将依赖认证的代码包裹在 v-if="!isLoading" 中 |
auth0-quickstart —— Auth0 基础配置auth0-migration —— 从其他认证服务商迁移auth0-mfa —— 启用多因素认证(MFA)auth0-cli —— 通过终端管理 Auth0 资源核心组合式函数(Composables):
useAuth0() —— 主认证组合式函数isAuthenticated —— 响应式判断用户是否已登录user —— 响应式用户资料信息loginWithRedirect() —— 触发登录流程logout() —— 注销当前用户getAccessTokenSilently() —— 静默获取访问令牌(用于 API 调用)常见使用场景: