import { inject } from '@angular/core'; import { Router, CanActivateFn } from '@angular/router'; import { AuthService } from '../services/auth.service'; export const authGuard: CanActivateFn = (route, state) => { console.log(`路由守卫检查: ${state.url}`); const authService = inject(AuthService); const router = inject(Router); const isAuthenticated = authService.isAuthenticated(); console.log('用户认证状态:', isAuthenticated); console.log('当前用户:', authService.getCurrentUser()); // 如果是登录页面,允许访问 if (state.url.includes('/login')) { console.log('访问登录页面,允许访问'); return true; } if (isAuthenticated) { console.log('用户已认证,允许访问'); return true; } console.log('用户未认证,重定向到登录页面'); // 未认证,重定向到登录页面,并保存返回URL return router.createUrlTree(['/login'], { queryParams: { returnUrl: state.url } }); };