性能优化: - 添加数据库索引优化查询性能 (006) - weather_data: user_id, date, is_favorite 索引 - users: openid 索引 - payment_orders: status 索引 - 新增 refresh_tokens 表支持双 Token 机制 (004) - 新增 web_login_codes 表支持网页端扫码登录 (005) 安全增强: - 实现基于 IP 的登录限流 (rate_limiter.rs) - 滑动窗口算法: 5次/分钟/IP - 自动清理过期记录 - 429 TooManyRequests 响应 新模块: - src/rate_limiter.rs: 限流模块 - src/alipay.rs: 支付宝签名模块 (RSA2) - src/error.rs: 统一错误类型 (含 TooManyRequests) - src/handlers/meta.rs: 元数据处理器 代码清理: - 修复 .gitignore 规则,正确跟踪 src/ 和 migrations/
28 lines
1.2 KiB
SQL
28 lines
1.2 KiB
SQL
-- ============================================
|
||
-- 迁移: 004_add_refresh_tokens.sql
|
||
-- 目的: 添加 refresh_tokens 表支持双 Token 机制
|
||
-- 日期: 2026-04-18
|
||
-- 依赖: 无(users 表已在 001 创建)
|
||
-- 说明: 用于存储 refresh_token,支持 access_token 过期后自动续期
|
||
-- ============================================
|
||
|
||
-- 迁移: 添加 refresh_tokens 表
|
||
-- 用于支持 access_token 刷新机制
|
||
|
||
CREATE TABLE IF NOT EXISTS refresh_tokens (
|
||
id SERIAL PRIMARY KEY,
|
||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||
token VARCHAR(512) NOT NULL,
|
||
expires_at TIMESTAMPTZ NOT NULL,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 索引:加速 token 查询和用户清理
|
||
CREATE INDEX IF NOT EXISTS idx_refresh_tokens_token ON refresh_tokens(token);
|
||
CREATE INDEX IF NOT EXISTS idx_refresh_tokens_user_id ON refresh_tokens(user_id);
|
||
CREATE INDEX IF NOT EXISTS idx_refresh_tokens_expires_at ON refresh_tokens(expires_at);
|
||
|
||
COMMENT ON TABLE refresh_tokens IS 'Refresh token 存储表,支持 access_token 续期';
|
||
COMMENT ON COLUMN refresh_tokens.token IS 'Refresh token 字符串';
|
||
COMMENT ON COLUMN refresh_tokens.expires_at IS '过期时间';
|