关于 nuxt-users
nuxt-users 是用于配置 Nuxt 用户认证、角色权限和账户管理的技能,面向 Nuxt 开发者,涵盖配置、命令行操作、组合式函数与界面组件。
主要功能
- 01配置认证与角色权限
- 02运行迁移并创建用户
- 03使用认证组合式函数
- 04添加登录与资料组件
- 05设置密码校验和本地化
适用场景
- 01配置账户登录与退出
- 02按用户角色限制路由
- 03创建和管理用户账户
- 04配置密码重置与确认
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ onmax/ nuxt-skills --skill nuxt-users安装后在 Claude Code 中输入/nuxt-users确认已加载。
详细介绍
Nuxt Users 技能
初始设置
-
安装模块和同级依赖
npm install nuxt-users npm install db0 better-sqlite3 bcrypt nodemailer对于 MySQL 或 PostgreSQL,请根据需要安装对应的驱动(
mysql2或pg),替代better-sqlite3,或在其基础上额外安装。 -
在
nuxt.config.ts中注册模块export default defineNuxtConfig({ modules: ['nuxt-users'] }) -
运行迁移 在项目根目录(
nuxt.config.ts所在目录)中运行:npx nuxt-users migrate -
至少创建一个用户
npx nuxt-users create-user -e [email protected] -n "Admin User" -p password123 -r admin参数:
-e表示电子邮箱,-n表示姓名,-p表示密码,-r表示角色(可选)。 -
配置权限
export default defineNuxtConfig({ modules: ['nuxt-users'], nuxtUsers: { auth: { permissions: { admin: ['*'], user: ['/profile', '/api/nuxt-users/me'] } } } }) -
在页面中使用登录功能
- 使用
NUsersLoginForm组件,并在@success事件中调用useAuthentication()返回的login(user)。 - 可选:登录后重定向(例如
navigateTo('/'))。
- 使用
配置参考(nuxt.config.ts)
所有选项都位于 nuxt.config.ts 中的 nuxtUsers 下。
| 区域 | 键 | 说明 |
|---|---|---|
| 数据库 | connector.name | 'sqlite' | 'mysql' | 'postgresql' |
| 数据库 | connector.options | path(SQLite),或 host、port、user、password、database(MySQL/PostgreSQL) |
| API | apiBasePath | 默认值为 '/api/nuxt-users' |
| 表 | tables.users、tables.personalAccessTokens、tables.passwordResetTokens、tables.migrations | 自定义表名 |
| 邮件程序 | mailer | 用于发送密码重置邮件的 Nodemailer 配置 |
| URL | passwordResetUrl、emailConfirmationUrl | 重定向路径 |
| 认证 | auth.whitelist | 公共路由(例如 ['/register']);/login 始终为公共路由 |
| 认证 | auth.tokenExpiration | 分钟数(默认值为 1440) |
| 认证 | auth.rememberMeExpiration | 天数(默认值为 30) |
| 认证 | auth.permissions | 角色 → 路径(例如 admin: ['*']、user: ['/profile'])。键为预定义角色。 |
| 认证 | auth.allowCustomRoles | 默认值为 false。设为 true 时,创建/更新 API 和 NUsersUserForm 接受未列在 permissions 中的角色。空的 permissions(引导配置)本身就接受任意角色。 |
| 认证 | auth.google | Google OAuth:clientId、clientSecret、callbackUrl 等。 |
| 密码 | passwordValidation | minLength、requireUppercase、requireLowercase、requireNumbers、requireSpecialChars、preventCommonPasswords |
| 数据 | hardDelete | true = 硬删除,false = 软删除(默认值) |
| 区域设置 | locale.default、locale.texts、locale.fallbackLocale | 本地化 |
同时也支持运行时配置:使用 runtimeConfig.nuxtUsers 设置基于环境变量或仅限服务端的选项。 |
CLI 命令
请从项目根目录运行,以便找到 nuxt.config.ts(以及可选的 .env)。
-
迁移
npx nuxt-users migrate -
创建用户
npx nuxt-users create-user -e <email> -n "<name>" -p <password> [-r <role>]除非
auth.allowCustomRoles为true(或权限列表为空),否则角色必须与某个auth.permissions键匹配。 -
旧版/表创建
npx nuxt-users create-users-table npx nuxt-users create-personal-access-tokens-table npx nuxt-users create-password-reset-tokens-table npx nuxt-users create-migrations-table
生产环境: CLI 要求在 Node 运行的位置安装
nuxt-users(及其同级依赖),它不会打包在.output/中。完整配置需要应用根目录中包含nuxt.config;仅构建或使用--omit=dev部署时,则会回退到DB_*环境变量。请参阅docs/user-guide/configuration.md。
组合式函数(自动导入)
- useAuthentication() —
user、isAuthenticated、login(user, rememberMe?)、logout()、fetchUser(useSSR?)、initializeUser() - useUsers() — 管理员:
users、pagination、loading、error、fetchUsers(page?, limit?)、updateUser、addUser、removeUser(userId) - usePublicPaths() —
getPublicPaths()、getAccessiblePaths()、isPublicPath(path)、isAccessiblePath(path, method?) - usePasswordValidation(moduleOptions?, options?) —
validate(password)、isValid、errors、strength、score、clearValidation() - useNuxtUsersLocale() —
t(key, params?)、currentLocale、fallbackLocale
组件
NUsersLoginForm— 登录表单;使用@success调用useAuthentication()中的login(user)NUsersLogoutLink— 注销链接/按钮NUsersProfileInfo— 显示个人资料NUsersResetPasswordForm— 重置密码表单NUsersList— 用户列表(管理员)NUsersUserForm— 创建/编辑用户表单;角色下拉选项来自auth.permissions键;设置auth.allowCustomRoles: true可提供自定义自由文本角色选项
故障排查
| 症状 | 解决方法 |
|---|---|
| 访问受保护路由时被重定向到登录页 | 设置 auth.permissions,确保每个角色都能访问所需路由 |
| 找不到 CLI 配置/表名错误 | 从包含 nuxt.config 的目录运行 CLI;请参阅上方的生产环境说明 |
| 缺少迁移表 | 在项目根目录运行 npx nuxt-users migrate |
| 数据库驱动错误 | 安装正确的同级依赖:SQLite → better-sqlite3,MySQL → mysql2,PostgreSQL → pg |
文件参考
- 项目 LLM 上下文和配置类型:仓库根目录中的 llms.txt
- 完整文档:https://nuxt-users.webmania.cc/
- 入门指南和示例:
../../docs/user-guide/getting-started.md、../../docs/examples/basic-setup.md - 授权:
../../docs/user-guide/authorization.md - 配置详情:
../../docs/user-guide/configuration.md
请确保 nuxtUsers 配置和权限与应用的角色和路由保持同步;实现自定义身份验证逻辑时,请使用守卫子句和提前返回。
评论
支持 Markdown