auth.guard.ts 969 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { Injectable } from "@angular/core";
  2. import {
  3. CanActivate,
  4. ActivatedRouteSnapshot,
  5. RouterStateSnapshot,
  6. } from "@angular/router";
  7. import { Observable } from "rxjs";
  8. import { Router } from "@angular/router";
  9. import Parse from "parse";
  10. @Injectable({
  11. providedIn: "root",
  12. })
  13. export class AuthGuard implements CanActivate {
  14. LoginPage = "login";
  15. constructor(public router: Router) {}
  16. canActivate(
  17. next: ActivatedRouteSnapshot,
  18. state: RouterStateSnapshot
  19. ): Observable<boolean> | Promise<boolean> | boolean {
  20. // 当前路由url
  21. let url: string = state.url;
  22. return this.checkLogin(url);
  23. }
  24. checkLogin(url: string): boolean {
  25. // 如果已登录,直接跳转当前路由 跳出该函数
  26. let currentUser = Parse.User.current();
  27. if (currentUser && currentUser.id) {
  28. return true;
  29. }
  30. // 否则重定向到login页面
  31. this.router.navigate([this.LoginPage]);
  32. return false;
  33. }
  34. }
  35. export { CanActivate };