rwadurian/frontend/mining-app
hailin 97f8b7339f fix(auth): LOGIN 能力禁用后强制下线已登录用户
## 问题
管理员在后台禁用用户的 LOGIN 能力后,该用户仍然可以正常使用 mining-app。
原因是 LOGIN 检查只在登录/刷新 token 时执行,已持有有效 JWT(7天有效期)
的用户不会被影响,直到 token 过期才会被拦截。

## 修复

### 后端 - JwtAuthGuard (auth-service)
- 在 JWT 验证通过后,增加 LOGIN 能力实时检查
- 调用 CapabilityService.isCapabilityEnabled() 查询 Redis 缓存
- LOGIN 被禁用时返回 403 ForbiddenException("您的账户已被限制登录")
- 采用 fail-open 策略:Redis/DB 查询失败时放行,不影响正常用户
- 每次认证请求多一次 Redis GET(<1ms),对当前用户规模无性能影响

### 前端 - mining-app API Client
- 新增 onLoginDisabled 全局回调(类似现有的 onUnauthorized)
- Dio 拦截器检测 403 响应中包含"限制登录"关键词时触发回调
- 回调执行:清除用户状态 + 跳转登录页(与 401 处理一致)

## 影响范围
- 所有使用 @UseGuards(JwtAuthGuard) 的端点都会实时检查 LOGIN 能力
- 管理员禁用 LOGIN 后,用户下一次 API 请求即被拦截并强制下线
- 不影响公开端点(登录、注册等不经过 JwtAuthGuard 的接口)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 05:01:37 -08:00
..
android fix(mining-app): 移除 debug applicationIdSuffix 修复升级后双图标 2026-01-31 05:57:34 -08:00
assets fix(mining-app): 添加assets/images目录 2026-01-11 08:12:29 -08:00
ios chore(app): rename app to 股行 2026-01-16 23:50:23 -08:00
lib fix(auth): LOGIN 能力禁用后强制下线已登录用户 2026-02-28 05:01:37 -08:00
scripts feat(mining-app): 添加自动版本号增长机制 2026-01-29 21:32:15 -08:00
test refactor(frontend): replace all '榴莲' references with '股行' 2026-01-19 04:33:47 -08:00
.gitignore feat(mining-app): 添加自动版本号增长机制 2026-01-29 21:32:15 -08:00
.metadata feat(mining-app): 添加Android/iOS平台配置和编译支持 2026-01-11 08:06:53 -08:00
DEVELOPMENT_GUIDE.md refactor(mining-app): rename 绿积分 to 积分值 across all pages 2026-01-14 19:57:17 -08:00
README.md feat(mining-app): 添加Android/iOS平台配置和编译支持 2026-01-11 08:06:53 -08:00
analysis_options.yaml feat(mining-ecosystem): 添加挖矿生态系统完整微服务与前端 2026-01-10 17:45:46 -08:00
pubspec.yaml chore: 同步线上构建版本号,避免服务器编译时版本号回退 2026-02-26 00:29:29 -08:00

README.md

mining_app

A new Flutter project.

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.