外观
令牌转换拦截器 🔄
功能介绍 💡
WARNING
令牌转换拦截器就像一个安全中转站,通过临时令牌(code)替代真实令牌(token)来提升系统安全性。主要用于文件下载等需要在URL中传递身份认证信息的场景。
核心功能 ✨
- 🔑 临时code转换为token
- 📝 临时code生成接口
- 🔄 登录时自动生成临时code
应用场景示例 🌟
文件下载安全增强
传统方式的问题:
- ❌ URL中直接携带token
- ❌ token可能被非法获取
- ❌ token泄露风险高
转换方式的优势:
- ✅ 使用临时code替代token
- ✅ code具有时效性
- ✅ 有效防止token泄露
详细配置说明 ⚙️
核心参数说明
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
enabled | boolean | 否 | false | 是否启用拦截器 |
rules | array[object] | 是 | - | 转换规则配置列表 |
转换规则配置详解 (rules)
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
business-key | string | 否 | bearer | 业务标识(多系统区分用) |
field-name | string | 是 | - | 临时code的参数名 |
transform-urls | array[string] | 是 | - | 需要进行转换的URL列表 |
generate-urls | array[string] | 否 | - | 生成临时code的URL列表 |
expire | Duration | 否 | 10m | 临时code有效期 |
配置示例 📋
基础配置
yaml
gateway:
filter:
authorization-transform:
enabled: true # 启用令牌转换
rules:
- field-name: uuid # 参数名称
transform-urls: # 需要转换的地址
- /api/download/**
generate-urls: # 生成临时code的地址
- /api/code/generate
expire: 10m # 10分钟有效期
多规则配置
yaml
gateway:
filter:
authorization-transform:
enabled: true
rules:
- field-name: uuid # 下载文件场景
transform-urls:
- /api/download/**
generate-urls:
- /api/code/generate
expire: 30m # 30分钟有效期
- field-name: temp_token # 导出数据场景
transform-urls:
- /api/export/**
generate-urls:
- /api/temp/token
expire: 5m # 5分钟有效期
完整配置示例
yaml
gateway:
filter:
authorization-transform:
enabled: true
rules:
# 文件下载场景
- business-key: file-download
field-name: download_code
transform-urls:
- /api/file/download/**
- /api/attachment/download/**
generate-urls:
- /api/file/code
- /api/attachment/code
expire: 15m
# 数据导出场景
- business-key: data-export
field-name: export_token
transform-urls:
- /api/export/excel/**
- /api/export/pdf/**
generate-urls:
- /api/export/token
expire: 5m
# 报表查看场景
- business-key: report-view
field-name: view_code
transform-urls:
- /api/report/view/**
- /api/chart/view/**
generate-urls:
- /api/report/code
expire: 60m
高级配置示例
yaml
gateway:
filter:
authorization-transform:
enabled: true
rules:
# 短期下载 - 高安全性
- business-key: secure-download
field-name: secure_code
transform-urls:
- /api/secure/download/**
- /api/confidential/download/**
generate-urls:
- /api/secure/code
expire: 2m # 2分钟短期有效
# 批量操作 - 中等安全性
- business-key: batch-operation
field-name: batch_token
transform-urls:
- /api/batch/download/**
- /api/batch/export/**
generate-urls:
- /api/batch/token
expire: 30m # 30分钟中期有效
# 公开资源 - 低安全性
- business-key: public-resource
field-name: public_code
transform-urls:
- /api/public/download/**
generate-urls:
- /api/public/code
expire: 120m # 2小时长期有效
不同业务场景配置
文档管理系统
yaml
gateway:
filter:
authorization-transform:
enabled: true
rules:
# 文档下载
- business-key: document
field-name: doc_code
transform-urls:
- /api/document/download/**
- /api/document/preview/**
generate-urls:
- /api/document/code
expire: 20m
# 模板下载
- business-key: template
field-name: template_code
transform-urls:
- /api/template/download/**
generate-urls:
- /api/template/code
expire: 60m
电商平台
yaml
gateway:
filter:
authorization-transform:
enabled: true
rules:
# 订单导出
- business-key: order-export
field-name: order_token
transform-urls:
- /api/order/export/**
generate-urls:
- /api/order/export-token
expire: 10m
# 商品图片下载
- business-key: product-image
field-name: image_code
transform-urls:
- /api/product/image/download/**
generate-urls:
- /api/product/image/code
expire: 30m
# 发票下载
- business-key: invoice
field-name: invoice_code
transform-urls:
- /api/invoice/download/**
generate-urls:
- /api/invoice/code
expire: 15m
教育平台
yaml
gateway:
filter:
authorization-transform:
enabled: true
rules:
# 课件下载
- business-key: courseware
field-name: courseware_code
transform-urls:
- /api/course/download/**
- /api/material/download/**
generate-urls:
- /api/course/code
expire: 45m
# 作业提交文件下载
- business-key: homework
field-name: homework_token
transform-urls:
- /api/homework/download/**
generate-urls:
- /api/homework/token
expire: 30m
# 成绩单导出
- business-key: grade-report
field-name: grade_code
transform-urls:
- /api/grade/export/**
generate-urls:
- /api/grade/code
expire: 10m
企业办公系统
yaml
gateway:
filter:
authorization-transform:
enabled: true
rules:
# 合同文件下载
- business-key: contract
field-name: contract_code
transform-urls:
- /api/contract/download/**
generate-urls:
- /api/contract/code
expire: 60m
# 财务报表导出
- business-key: financial-report
field-name: finance_token
transform-urls:
- /api/finance/export/**
generate-urls:
- /api/finance/token
expire: 5m # 财务数据短期有效
# 员工信息导出
- business-key: employee-data
field-name: employee_code
transform-urls:
- /api/employee/export/**
generate-urls:
- /api/employee/code
expire: 15m
使用流程指南 📝
- 生成临时Code
http
GET /api/code/generate HTTP/1.1
Host: your-domain.com
Authorization: Bearer your-real-token
接口返回示例
json
{
"code": 0,
"successful": true,
"msg": null,
"data": {
"code": "bearer:d8bb2c4aeff84438b5b5627e500e6b2c", // 临时code
"expire": "2025-04-28 21:16:22" // 过期时间
},
"encrypt": false
}
- 使用临时Code
http
GET /api/download/file?uuid=temporary-code HTTP/1.1
Host: your-domain.com
最佳实践 💡
安全建议
- 设置合适的过期时间
- 使用HTTPS传输
- 避免重复使用临时code
性能优化
- 合理缓存临时code
- 及时清理过期code
- 控制生成频率
用户体验
- 提前生成临时code
- 处理code过期情况
- 添加友好的错误提示
常见问题 ❓
临时code失效
- 检查是否超过有效期
- 确认code是否已使用
- 验证code格式是否正确
转换失败
- 检查URL配置是否正确
- 验证参数名称是否匹配
- 确认Redis服务是否正常
安全提示 ⚠️
CAUTION
- 临时code仅一次有效
- 及时清理过期code
- 监控异常访问行为
- 避免code重复使用