feat: 事件详情页 URL ID 加密,防止用户遍历

- 新增 idEncoder.ts 工具:使用 Base64 + 前缀混淆加密 ID
- 路由改为查询参数形式:/event-detail?id=xxx
- 更新所有入口使用 getEventDetailUrl() 生成加密链接
- 兼容旧链接:纯数字 ID 仍可正常访问

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
zdl
2025-12-04 18:26:01 +08:00
parent 6cf92b6851
commit f64c1ffb19
7 changed files with 94 additions and 45 deletions

View File

@@ -62,6 +62,7 @@ import {
} from 'react-icons/fi';
import MyFutureEvents from './components/MyFutureEvents';
import InvestmentPlanningCenter from './components/InvestmentPlanningCenter';
import { getEventDetailUrl } from '@/utils/idEncoder';
export default function CenterDashboard() {
const { user } = useAuth();
@@ -441,7 +442,7 @@ export default function CenterDashboard() {
<VStack align="stretch" spacing={3}>
<LinkOverlay
as={Link}
to={`/event-detail/${event.id}`}
to={getEventDetailUrl(event.id)}
>
<Text fontWeight="medium" fontSize="md" noOfLines={2}>
{event.title}