security: 隐私接口全面加固,统一 token 鉴权
- /api/orders/[id] 只返回 id/status/expiresAt,移除 user_name/pay_url 等隐私字段
- /api/orders/[id]/cancel 改为 token 鉴权,服务端验证用户身份后执行取消
- /api/orders (POST 响应) 过滤 userName/userBalance,不向客户端暴露
- /api/user 移除 username/email/balance,只返回 id/status 和 config
- /api/users/[id] 只返回 {id, exists},不暴露任何隐私信息
- pay/page.tsx 恢复从服务端动态获取 config,无 token 时只显示用户 ID
- pay/orders/page.tsx 无 token 时不查询隐私接口,统一按钮样式
- PaymentQRCode 新增 token prop,无 token 时隐藏取消按钮
- 创建订单失败改为中文错误提示
This commit is contained in:
@@ -64,19 +64,7 @@ function OrdersContent() {
|
||||
}
|
||||
|
||||
if (!hasToken) {
|
||||
const res = await fetch(`/api/users/${userId}`);
|
||||
if (res.ok) {
|
||||
const data = await res.json();
|
||||
setUserInfo({
|
||||
id: userId,
|
||||
username:
|
||||
(typeof data.displayName === 'string' && data.displayName.trim()) ||
|
||||
(typeof data.username === 'string' && data.username.trim()) ||
|
||||
(typeof data.email === 'string' && data.email.trim()) ||
|
||||
`用户 #${userId}`,
|
||||
balance: typeof data.balance === 'number' ? data.balance : 0,
|
||||
});
|
||||
}
|
||||
setUserInfo({ id: userId, username: `用户 #${userId}`, balance: 0 });
|
||||
setOrders([]);
|
||||
setError('当前链接未携带登录 token,无法查询"我的订单"。');
|
||||
return;
|
||||
@@ -185,7 +173,7 @@ function OrdersContent() {
|
||||
type="button"
|
||||
onClick={loadOrders}
|
||||
className={[
|
||||
'rounded-lg border px-3 py-2 text-xs font-medium',
|
||||
'inline-flex items-center rounded-lg border px-3 py-1.5 text-xs font-medium transition-colors',
|
||||
isDark
|
||||
? 'border-slate-600 text-slate-200 hover:bg-slate-800'
|
||||
: 'border-slate-300 text-slate-700 hover:bg-slate-100',
|
||||
@@ -196,7 +184,7 @@ function OrdersContent() {
|
||||
<a
|
||||
href={payUrl}
|
||||
className={[
|
||||
'rounded-lg border px-3 py-2 text-xs font-medium',
|
||||
'inline-flex items-center rounded-lg border px-3 py-1.5 text-xs font-medium transition-colors',
|
||||
isDark
|
||||
? 'border-slate-600 text-slate-200 hover:bg-slate-800'
|
||||
: 'border-slate-300 text-slate-700 hover:bg-slate-100',
|
||||
|
||||
Reference in New Issue
Block a user