- 3.1 bcrypt 移出事务 (Register): repository.HashPassword 前移到 db.Transaction 之前,消除连接池占用。
- 3.2 Login 消除用户枚举 + 限流 + timing 抹平: pkg/errors 加 ErrInvalidCredential
/ErrTooManyLoginAttempts; 用户不存在/密码错/密码空 三路径统一返回同一错误;
mobile 5次/ip 20次 per 15min 限流 (Redis, fail-open 降级); user-not-found 走
dummy bcrypt 抹平 ~100ms 时序差,完全消除枚举侧信道;空密码分支已核实无时序 leak。
- 3.3 MQ streams adapter 停用 → stub: 0 业务调用方, 新 stub EventProducer.Publish no-op;
pkg/mq/mq.go Init 不再装配 streams; 全仓 grep 验证 11 处硬编码
'gallery'/'default' 集中到 pkg/queue/consts (值不变, 仅消漂移)。
- 3.5 JWT 密钥治理: pkg/jwt MustInit fail-fast + atomic.Value (见上一个 commit
|
||
|---|---|---|
| .. | ||
| config | ||
| configs | ||
| middleware | ||
| mq | ||
| provider | ||
| repository | ||
| service | ||
| test | ||
| go.mod | ||
| go.sum | ||
| INIT.md | ||
| main.go | ||
| README.md | ||
| UPDATE_FAN_PROFILE_SOCIAL_IMPLEMENTATION.md | ||
User Service
用户与认证服务
功能
- 用户注册、登录、登出
- JWT Token 生成、刷新、验证
- 用户基本信息管理
- 粉丝档案管理
- 粉丝身份切换
启动
# 开发环境
go run main.go
# 生产环境
go run main.go \
--db-host=localhost \
--db-port=5432 \
--db-user=your_user \
--db-password=your_password \
--db-name=top-fans \
--port=50051
环境变量
也可以通过环境变量配置:
export DB_HOST=localhost
export DB_PORT=5432
export DB_USER=haihuizhu
export DB_PASSWORD=admin
export DB_NAME=top-fans
export SERVER_PORT=50051