用户认证体系
Nexus 内置完整的用户认证体系,覆盖注册、登录、验证、找回密码、第三方认证,并自身可作为 OAuth 2.0 / OIDC 提供方对外签发令牌。
能力清单
| 能力 | 说明 |
|---|---|
| 账号密码 | 注册 / 登录 / 登出,密码强度策略可配 |
| 邮箱验证 | 注册/敏感操作邮件验证码(nodemailer 发送) |
| 手机验证 | 短信验证码流程(接口已就位,网关按需接入) |
| 找回密码 | 邮箱验证后重置,密码传输全程加密 |
| 第三方认证 | GitHub / Google 一键登录,可扩展 OIDC 认证源 |
| OAuth 提供方 | 自身作为 OAuth 2.0 / OIDC Server 对外授权 |
| 会话管理 | JWT(HS256)+ HttpOnly Cookie |
| 安全防护 | 登录失败锁定、RSA 密码加密传输、bcrypt 存储 |
邮件前置条件:使用“找回密码”前,必须先到后台 系统配置 → 邮件配置 完成 SMTP 设置并测试发信。注册邮箱验证、实名认证中的邮箱验证,以及其他需要发送验证码的功能也依赖同一套 SMTP 配置。未配置或配置错误时,页面本身可以打开,但验证码邮件不会正常送达。
认证流程
- 密码传输安全:登录密码在客户端用 RSA-OAEP 加密后再提交(
usePasswordEncryption),服务端用私钥解密后 bcrypt 校验,明文密码不落网。 - 无状态会话:JWT 写入 HttpOnly Cookie,天然防 XSS 窃取,且不依赖服务端会话存储。
- 登录锁定:连续失败达到
NUXT_LOGIN_MAX_ATTEMPTS(默认 5)次,在NUXT_LOGIN_LOCK_WINDOW(默认 15 分钟)内锁定。
密码策略
通过环境变量配置(也可在系统配置页扩展):
| 变量 | 默认 | 说明 |
|---|---|---|
NUXT_PASSWORD_MIN_LENGTH | 8 | 最小长度 |
NUXT_PASSWORD_REQUIRE_UPPERCASE | true | 必须含大写 |
NUXT_PASSWORD_REQUIRE_LOWERCASE | true | 必须含小写 |
NUXT_PASSWORD_REQUIRE_DIGIT | true | 必须含数字 |
NUXT_PASSWORD_REQUIRE_SPECIAL_CHAR | false | 必须含特殊字符 |
注册与登录策略
在 后台 > 系统配置 > 访问控制 中配置,保存后即时生效:
| 开关 | 默认 | 说明 |
|---|---|---|
| 开放注册 | 开 | 允许新用户注册本平台账号 |
| 允许登录 | 开 | 允许用户登录平台(管理员不受影响) |
| 要求邮箱验证 | 关 | 开启后新注册用户须验证邮箱,否则直接注册 |
| 网站维护模式 | 关 | 开启后非管理员访问显示维护页 |
SMTP 前置条件:开启「要求邮箱验证」后,注册流程会向新用户发送邮箱验证码。必须先完成系统配置 → 邮件配置(SMTP)并测试发信,否则验证码无法送达。
第三方认证
支持 GitHub / Google / 自定义 OIDC 渠道一键登录,启用后登录页会显示对应渠道按钮。
准备工作
在对应平台创建 OAuth 应用,获取 Client ID 和 Client Secret:
- GitHub:Developer Settings
- Google:Cloud Console API 凭证
配置社交认证
- 打开
后台 > 社交认证(/admin/social-auth)。 - 选择渠道,填写 Client ID、Client Secret 和回调地址(Callback URL)。
- 启用渠道并保存。
截取 GitHub / Google 渠道的启用开关、Client ID / Client Secret 和回调地址字段,密钥使用测试值或完整遮盖。
/images/product/social-auth-config.png登录入口
登录页会展示已启用的第三方渠道按钮,点击后跳转第三方授权,授权回跳后自动完成注册或登录。
截取登录页的第三方登录按钮区域(GitHub / Google / OIDC 渠道)。
/images/product/login-social.png验收
- 登录页显示对应第三方渠道按钮。
- 点击后跳转第三方授权,回跳后能正常注册 / 登录。
- 后台「社交认证」中渠道状态为已启用。
OAuth 应用
Nexus 自身可作为 OAuth 2.0 / OIDC 提供方,让第三方应用通过标准协议接入本系统的用户认证。
创建 OAuth 应用
- 打开
后台 > 客户端(/admin/clients),点击创建。 - 填写应用名称、描述和回调地址(Redirect URI,支持多个)。
- 创建后获得 Client ID 与 Client Secret(Secret 仅展示一次,请立即保存)。
截取客户端列表与创建弹窗,突出名称、回调地址和创建后展示一次的 Client Secret。
/images/features/oauth-clients.png接入方式
- 授权端点:
/oauth/authorize、/oauth/token、/oauth/userinfo - OIDC 发现:
.well-known/openid-configuration、/oauth/jwks(RS256)
前置条件:启用 OAuth/OIDC 前,需要在服务器
.env配置NUXT_JWT_PRIVATE_KEY/NUXT_JWT_PUBLIC_KEY(RS256 密钥对);缺失时应用会告警,OAuth/OIDC 功能不可用。生成方式见环境变量。

