登录与注册
配置邮箱验证码、Google 登录和新用户注册范围。
Melso 默认使用邮箱验证码登录,也可以增加 Google OAuth。已经存在的用户始终可以再次登录;注册限制只决定是否允许创建新账号。
邮箱验证码
用户输入邮箱后,Melso 会发送一个 6 位验证码。验证码 10 分钟内有效,验证成功后浏览器获得登录 cookie。
邮件可以通过 Resend 或 SMTP 发送。两者同时配置时,SMTP_HOST 优先。
使用 Resend
-
在 Resend 验证发信域名并创建 API key。
-
设置:
RESEND_API_KEY=re_xxxxxxxxxxxxxxxx RESEND_FROM_EMAIL=noreply@example.com -
重启 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常见连接方式:
| 场景 | 配置 |
|---|---|
| 内网匿名 relay | SMTP_PORT=25,用户名和密码留空 |
| STARTTLS | SMTP_PORT=587,默认会在服务器支持时升级 TLS |
| 隐式 TLS | SMTP_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 API、SMTP relay 还是 DEV mode。
本地固定验证码
本地自动化测试可以设置固定验证码:
APP_ENV=development
MULTICA_DEV_VERIFICATION_CODE=888888验证码必须是 6 位数字。APP_ENV=production 时固定验证码会被忽略。
不要在公网实例中启用固定验证码。生产环境的组合是 APP_ENV=production 加空的 MULTICA_DEV_VERIFICATION_CODE。
Google 登录
-
在 Google Cloud Console 创建 OAuth 2.0 client。
-
把 Melso 前端的回调地址加入 Authorized redirect URIs:
https://multica.example.com/auth/callback -
设置:
GOOGLE_CLIENT_ID=xxxxx.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxx GOOGLE_REDIRECT_URI=https://multica.example.com/auth/callback -
重启 API 服务。
Google Console 与 GOOGLE_REDIRECT_URI 中的地址必须完全一致,包括协议、端口和结尾斜杠。配置生效后,登录页会出现 Google 登录按钮;前端镜像不需要重新构建。
注册范围控制
三个变量共同决定新账号能否创建:
| 变量 | 作用 |
|---|---|
ALLOWED_EMAILS | 允许的完整邮箱,多个值用逗号分隔 |
ALLOWED_EMAIL_DOMAINS | 允许的邮箱域名,多个值用逗号分隔 |
ALLOW_SIGNUP | 未配置任何白名单时,是否允许注册;默认 true |
判断顺序如下:
- 邮箱命中
ALLOWED_EMAILS,允许; - 或域名命中
ALLOWED_EMAIL_DOMAINS,允许; - 未命中时,如果
ALLOW_SIGNUP=false,拒绝; ALLOW_SIGNUP=true但设置了任意白名单且未命中,仍然拒绝;- 没有设置白名单且
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,不会延长已经签发的令牌。