Skip to content

用户认证体系 ​

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_LENGTH8最小长度
NUXT_PASSWORD_REQUIRE_UPPERCASEtrue必须含大写
NUXT_PASSWORD_REQUIRE_LOWERCASEtrue必须含小写
NUXT_PASSWORD_REQUIRE_DIGITtrue必须含数字
NUXT_PASSWORD_REQUIRE_SPECIAL_CHARfalse必须含特殊字符

注册与登录策略 ​

在 后台 > 系统配置 > 访问控制 中配置,保存后即时生效:

开关默认说明
开放注册开允许新用户注册本平台账号
允许登录开允许用户登录平台(管理员不受影响)
要求邮箱验证关开启后新注册用户须验证邮箱,否则直接注册
网站维护模式关开启后非管理员访问显示维护页

SMTP 前置条件:开启「要求邮箱验证」后,注册流程会向新用户发送邮箱验证码。必须先完成系统配置 → 邮件配置(SMTP)并测试发信,否则验证码无法送达。

第三方认证 ​

支持 GitHub / Google / 自定义 OIDC 渠道一键登录,启用后登录页会显示对应渠道按钮。

准备工作 ​

在对应平台创建 OAuth 应用,获取 Client ID 和 Client Secret:

配置社交认证 ​

  1. 打开 后台 > 社交认证(/admin/social-auth)。
  2. 选择渠道,填写 Client ID、Client Secret 和回调地址(Callback URL)。
  3. 启用渠道并保存。

登录入口 ​

登录页会展示已启用的第三方渠道按钮,点击后跳转第三方授权,授权回跳后自动完成注册或登录。

验收 ​

  • 登录页显示对应第三方渠道按钮。
  • 点击后跳转第三方授权,回跳后能正常注册 / 登录。
  • 后台「社交认证」中渠道状态为已启用。

OAuth 应用 ​

Nexus 自身可作为 OAuth 2.0 / OIDC 提供方,让第三方应用通过标准协议接入本系统的用户认证。

创建 OAuth 应用 ​

  1. 打开 后台 > 客户端(/admin/clients),点击创建。
  2. 填写应用名称、描述和回调地址(Redirect URI,支持多个)。
  3. 创建后获得 Client ID 与 Client Secret(Secret 仅展示一次,请立即保存)。

接入方式 ​

  • 授权端点:/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 功能不可用。生成方式见环境变量。