Melso Docs

登录与注册

配置邮箱验证码、Google 登录和新用户注册范围。

Melso 默认使用邮箱验证码登录,也可以增加 Google OAuth。已经存在的用户始终可以再次登录;注册限制只决定是否允许创建新账号。

邮箱验证码

用户输入邮箱后,Melso 会发送一个 6 位验证码。验证码 10 分钟内有效,验证成功后浏览器获得登录 cookie。

邮件可以通过 Resend 或 SMTP 发送。两者同时配置时,SMTP_HOST 优先。

使用 Resend

  1. Resend 验证发信域名并创建 API key。

  2. 设置:

    RESEND_API_KEY=re_xxxxxxxxxxxxxxxx
    RESEND_FROM_EMAIL=noreply@example.com
  3. 重启 API 服务。

RESEND_FROM_EMAIL 必须属于已经在 Resend 验证的域名。

使用 SMTP

最少需要设置主机和发件地址:

SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=multica
SMTP_PASSWORD=<password>
SMTP_FROM_EMAIL=noreply@example.com

常见连接方式:

场景配置
内网匿名 relaySMTP_PORT=25,用户名和密码留空
STARTTLSSMTP_PORT=587,默认会在服务器支持时升级 TLS
隐式 TLSSMTP_PORT=465,或显式设置 SMTP_TLS=implicit

如果没有设置 SMTP_FROM_EMAIL,会回退到 RESEND_FROM_EMAIL。私有 CA 或自签证书需要把 CA 加入容器信任库;SMTP_TLS_INSECURE=true 会跳过证书校验,只应在可信内网中临时使用。

有些严格的 relay 还要求合法的 EHLO 名称:

SMTP_EHLO_NAME=mail.example.com

无邮件服务时的行为

服务器仍可启动,但验证码和邀请链接只会写入日志,不会发送邮件。这适合本地开发,不适合生产环境。

启动日志会说明当前使用的是 Resend APISMTP relay 还是 DEV mode

本地固定验证码

本地自动化测试可以设置固定验证码:

APP_ENV=development
MULTICA_DEV_VERIFICATION_CODE=888888

验证码必须是 6 位数字。APP_ENV=production 时固定验证码会被忽略。

不要在公网实例中启用固定验证码。生产环境的组合是 APP_ENV=production 加空的 MULTICA_DEV_VERIFICATION_CODE

Google 登录

  1. Google Cloud Console 创建 OAuth 2.0 client。

  2. 把 Melso 前端的回调地址加入 Authorized redirect URIs

    https://multica.example.com/auth/callback
  3. 设置:

    GOOGLE_CLIENT_ID=xxxxx.apps.googleusercontent.com
    GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxx
    GOOGLE_REDIRECT_URI=https://multica.example.com/auth/callback
  4. 重启 API 服务。

Google Console 与 GOOGLE_REDIRECT_URI 中的地址必须完全一致,包括协议、端口和结尾斜杠。配置生效后,登录页会出现 Google 登录按钮;前端镜像不需要重新构建。

注册范围控制

三个变量共同决定新账号能否创建:

变量作用
ALLOWED_EMAILS允许的完整邮箱,多个值用逗号分隔
ALLOWED_EMAIL_DOMAINS允许的邮箱域名,多个值用逗号分隔
ALLOW_SIGNUP未配置任何白名单时,是否允许注册;默认 true

判断顺序如下:

  1. 邮箱命中 ALLOWED_EMAILS,允许;
  2. 或域名命中 ALLOWED_EMAIL_DOMAINS,允许;
  3. 未命中时,如果 ALLOW_SIGNUP=false,拒绝;
  4. ALLOW_SIGNUP=true 但设置了任意白名单且未命中,仍然拒绝;
  5. 没有设置白名单且 ALLOW_SIGNUP=true,允许。

常见配置:

# 只允许公司域名
ALLOW_SIGNUP=false
ALLOWED_EMAIL_DOMAINS=company.com

# 再放行一位外部协作者
ALLOWED_EMAILS=partner@example.net

两个白名单在 ALLOW_SIGNUP=false 时也可以作为明确的例外名单。

邀请与注册限制

邀请不会自动绕过注册限制:

  • 对方已经有 Melso 账号时,可以登录并接受邀请;
  • 对方还没有账号时,邮箱必须符合上面的注册规则。

在关闭开放注册的实例中邀请新成员时,先把对方邮箱加入 ALLOWED_EMAILS。账号创建并接受邀请后,可以再从名单中移除。

登录有效期

浏览器登录默认保持 30 天。可以用 AUTH_TOKEN_TTL 调整,支持 Go duration 或正整数秒数:

AUTH_TOKEN_TTL=720h

修改后需要重启 API 服务。这个值只影响之后签发的登录 cookie 和 JWT,不会延长已经签发的令牌。

接下来