AutoRegistrar.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. 'use client'; // <--- 必须加这行
  2. import { useEffect } from 'react';
  3. import api from '@/lib/api';
  4. export default function AutoRegistrar() {
  5. useEffect(() => {
  6. const runAutoRegister = async () => {
  7. // 1. 检查本地是否有 Token
  8. const token = localStorage.getItem('rsid');
  9. // 调试日志:让你知道为什么没跑
  10. if (token) {
  11. console.log("AutoRegistrar: 检测到已有 Token,跳过自动注册");
  12. return;
  13. }
  14. console.log("AutoRegistrar: 未检测到 Token,开始自动注册...");
  15. try {
  16. // 2. 调用自动注册接口
  17. const res = await api.post('/api/auth/auto-register', {
  18. register_ip: 'client-init'
  19. });
  20. const data = res.data.data || res.data;
  21. const newToken = data.token || data.access_token;
  22. // 3. 保存 Token
  23. if (newToken) {
  24. localStorage.setItem('rsid', newToken);
  25. if (data.user) {
  26. localStorage.setItem('user_info', JSON.stringify(data.user));
  27. }
  28. console.log("AutoRegistrar: 自动注册成功!Token 已保存。");
  29. // 通知 Navbar 更新状态
  30. window.dispatchEvent(new Event('storage'));
  31. }
  32. } catch (error) {
  33. console.error("AutoRegistrar: 自动注册失败", error);
  34. }
  35. };
  36. runAutoRegister();
  37. }, []);
  38. return null; // 这个组件不需要渲染任何 HTML
  39. }