# 文件浏览服务认证迁移到 auth_v2 报告
**迁移时间:** 2026-03-29 20:34
**状态:** ✅ 已完成
---
## ✅ 迁移内容
### 1. 认证服务配置
**修改前:**
```python
# 旧认证服务配置
AUTH_SERVER = 'https://ebankofdata.online'
token = request.cookies.get('sso_token')
response = requests.post(f'{AUTH_SERVER}/api/token/verify', json={'token': token})
redirect_url = 'https://ebankofdata.online/login?next={next_url}&app=file_browser'
```
**修改后:**
```python
# auth_v2 认证配置
AUTH_SERVER = 'https://ebankofdata.online'
AUTH_LOGIN_URL = 'https://ebankofdata.online/auth/#/login'
token = request.cookies.get('auth_token')
response = requests.post(f'{AUTH_SERVER}/auth-api/token/verify', json={'token': token})
redirect_url = 'https://ebankofdata.online/auth/#/login?next={next_url}'
```
---
## 📁 修改文件
### /home/app/file_browser/file_browser.py
| 修改项 | 修改内容 |
|--------|----------|
| **Cookie 名称** | `sso_token` → `auth_token` |
| **Token 验证 API** | `/api/token/verify` → `/auth-api/token/verify` |
| **登录重定向 URL** | `/login` → `/auth/#/login` |
| **登出 API** | `/api/logout` → `/auth-api/logout` |
| **登出后跳转** | `/login` → `/auth/#/login` |
| **个人中心链接** | 新增,指向 `/auth/` |
---
## 🔐 认证流程
### 未登录用户访问
```
1. 用户访问 https://ebankofdata.online/files/
↓
2. 检测到无 auth_token
↓
3. 重定向到 https://ebankofdata.online/auth/#/login?next=...
↓
4. 用户在 auth_v2 登录
↓
5. auth_v2 设置 auth_token cookie
↓
6. 重定向回文件浏览服务
↓
7. 验证 auth_token,允许访问
```
### 已登录用户访问
```
1. 用户访问 https://ebankofdata.online/files/
↓
2. 检测到 auth_token
↓
3. 调用 /auth-api/token/verify 验证
↓
4. 验证通过,显示文件列表
```
---
## 🎯 修改详情
### 1. 认证检查函数
**修改前:**
```python
def check_auth():
token = request.cookies.get('sso_token')
response = requests.post(f'{AUTH_SERVER}/api/token/verify',
json={'token': token})
if data.get('valid'):
return True, data.get('username')
```
**修改后:**
```python
def check_auth():
token = request.cookies.get('auth_token')
response = requests.post(f'{AUTH_SERVER}/auth-api/token/verify',
json={'token': token})
if data.get('valid') or data.get('success'):
return True, data.get('username') or data.get('sub')
```
---
### 2. 登录重定向
**修改前:**
```python
return redirect(f'https://ebankofdata.online/login?next={next_url}&app=file_browser')
```
**修改后:**
```python
return redirect(f'{AUTH_LOGIN_URL}?next={next_url}')
# AUTH_LOGIN_URL = 'https://ebankofdata.online/auth/#/login'
```
---
### 3. 登出功能
**修改前:**
```javascript
function doLogout() {
fetch('/api/logout', {
method: 'POST',
credentials: 'include'
})
.then(response => response.json())
.then(data => {
document.cookie = 'sso_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
window.location.href = '/login';
});
}
```
**修改后:**
```javascript
function doLogout() {
fetch('https://ebankofdata.online/auth-api/logout', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + getToken()
},
credentials: 'include'
})
.then(response => response.json())
.then(data => {
document.cookie = 'auth_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
window.location.href = 'https://ebankofdata.online/auth/#/login';
});
}
```
---
### 4. 用户信息显示
**修改前:**
```html
```
**修改后:**
```html
```
---
## ✅ 验证结果
### 1. 未登录访问测试
```
访问:https://ebankofdata.online/files/
结果:重定向到 https://ebankofdata.online/auth/#/login?next=...
状态:✅ 正确
```
### 2. 登录后访问测试
```
1. 在 auth_v2 登录
2. 访问 https://ebankofdata.online/files/
3. 显示文件列表
状态:✅ 正确
```
### 3. Token 验证测试
```
调用:POST /auth-api/token/verify
参数:{"token": "xxx"}
响应:{"valid": true, "username": "admin"}
状态:✅ 正确
```
---
## 📊 对比
| 功能 | 旧认证 | auth_v2 |
|------|--------|---------|
| Cookie 名称 | sso_token | auth_token |
| 验证 API | /api/token/verify | /auth-api/token/verify |
| 登录页面 | /login | /auth/#/login |
| 登出 API | /api/logout | /auth-api/logout |
| 个人中心 | 无 | /auth/ |
| 验证码 | ❌ 无 | ✅ 有 |
| 登录失败限制 | ❌ 无 | ✅ 有 |
---
## 🎯 安全改进
### 使用 auth_v2 后的安全增强
1. **图形验证码** - 防止暴力破解
2. **登录失败限制** - 5 次失败后锁定 30 分钟
3. **Token 黑名单** - 退出登录后 Token 立即失效
4. **密码找回** - 支持邮箱重置密码
5. **Session 管理** - 更完善的会话管理
---
## 📝 配置说明
### 环境变量
```bash
# 认证服务器地址
AUTH_SERVER=https://ebankofdata.online
# 登录页面 URL
AUTH_LOGIN_URL=https://ebankofdata.online/auth/#/login
# 是否启用认证
ENABLE_AUTH=true
```
### Cookie 配置
```
名称:auth_token
路径:/
有效期:由 auth_v2 决定(默认 24 小时)
HttpOnly:是
Secure:是(HTTPS)
```
---
## 🚀 服务状态
```
● file_browser.service
Active: active (running)
Port: 8312
Workers: 4
Memory: 102.8M
```
---
## 📋 测试清单
| 测试项 | 状态 | 说明 |
|--------|------|------|
| 未登录访问 | ✅ | 重定向到 auth_v2 登录页 |
| 登录后访问 | ✅ | 正常显示文件列表 |
| Token 验证 | ✅ | auth_v2 token 验证通过 |
| 退出登录 | ✅ | 清除 token 并跳转 |
| 个人中心链接 | ✅ | 跳转到 auth_v2 个人中心 |
| 多目录访问 | ✅ | /home/files 和 /home/auto_test |
---
## ✅ 总结
**迁移状态:** ✅ 完成
**主要变更:**
1. ✅ Cookie 名称:sso_token → auth_token
2. ✅ API 路径:/api/* → /auth-api/*
3. ✅ 登录页面:/login → /auth/#/login
4. ✅ 验证逻辑:适配 auth_v2 响应格式
**安全改进:**
- ✅ 图形验证码保护
- ✅ 登录失败限制
- ✅ Token 黑名单机制
- ✅ 更完善的 Session 管理
**用户体验:**
- ✅ 统一登录入口
- ✅ 单点登录(SSO)
- ✅ 个人中心链接
- ✅ 一致的认证体验
---
**迁移人员:** AI Assistant
**迁移时间:** 2026-03-29 20:34
**测试状态:** ✅ 通过