| 123456789101112131415161718192021222324252627282930 |
- 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 }
- });
- };
|