Нема описа
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

auth.guard.ts 989B

123456789101112131415161718192021222324252627282930
  1. import { inject } from '@angular/core';
  2. import { Router, CanActivateFn } from '@angular/router';
  3. import { AuthService } from '../services/auth.service';
  4. export const authGuard: CanActivateFn = (route, state) => {
  5. console.log(`路由守卫检查: ${state.url}`);
  6. const authService = inject(AuthService);
  7. const router = inject(Router);
  8. const isAuthenticated = authService.isAuthenticated();
  9. console.log('用户认证状态:', isAuthenticated);
  10. console.log('当前用户:', authService.getCurrentUser());
  11. // 如果是登录页面,允许访问
  12. if (state.url.includes('/login')) {
  13. console.log('访问登录页面,允许访问');
  14. return true;
  15. }
  16. if (isAuthenticated) {
  17. console.log('用户已认证,允许访问');
  18. return true;
  19. }
  20. console.log('用户未认证,重定向到登录页面');
  21. // 未认证,重定向到登录页面,并保存返回URL
  22. return router.createUrlTree(['/login'], {
  23. queryParams: { returnUrl: state.url }
  24. });
  25. };