fix: 管理会话自动恢复与访问来源统计优化
- 新增 AdminSessionRecover:后台离线/后端重启时自动重试恢复会话,明确失效才回跳登录 - 认证 cookie 契约调整(SameSite=Lax 与刷新轮转适配),路由与守卫适配 - 访问来源统计查询优化与测试、管理端 analytics sources 页面适配 - 移动端布局修正:覆盖 body min-h-screen 避免内容区高度异常
This commit is contained in:
@@ -1,26 +1,37 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect, useRef } from "react";
|
||||
import { usePathname } from "next/navigation";
|
||||
import { Suspense, useEffect, useRef } from "react";
|
||||
import { usePathname, useSearchParams } from "next/navigation";
|
||||
import { apiTelemetryPageView } from "@/lib/api";
|
||||
|
||||
/**
|
||||
* 公开站页面访问埋点:同 path 30s 内合并;跳过 /admin。
|
||||
*/
|
||||
export default function VisitBeacon() {
|
||||
function BeaconInner() {
|
||||
const pathname = usePathname();
|
||||
const search = useSearchParams().toString();
|
||||
const lastRef = useRef<{ path: string; at: number }>({ path: "", at: 0 });
|
||||
|
||||
useEffect(() => {
|
||||
if (!pathname || pathname === "/admin" || pathname.startsWith("/admin/")) return;
|
||||
// 完整 URL(含 query):query 变化也上报,站内搜索 /?q=… 才能被记录
|
||||
const full = pathname + (search ? `?${search}` : "");
|
||||
const now = Date.now();
|
||||
if (lastRef.current.path === pathname && now - lastRef.current.at < 30_000) return;
|
||||
lastRef.current = { path: pathname, at: now };
|
||||
// 带 query 完整路径 + 来源页,供后台来源分析
|
||||
const full = pathname + (typeof window !== "undefined" ? window.location.search : "");
|
||||
if (lastRef.current.path === full && now - lastRef.current.at < 30_000) return;
|
||||
lastRef.current = { path: full, at: now };
|
||||
// 来源页,供后台来源分析
|
||||
const ref = typeof document !== "undefined" ? document.referrer : "";
|
||||
void apiTelemetryPageView(full, ref);
|
||||
}, [pathname]);
|
||||
}, [pathname, search]);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 公开站页面访问埋点:同 URL 30s 内合并;跳过 /admin。
|
||||
* useSearchParams 需 Suspense 边界(与 FooterTiming 同模式)。
|
||||
*/
|
||||
export default function VisitBeacon() {
|
||||
return (
|
||||
<Suspense fallback={null}>
|
||||
<BeaconInner />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user