angular项目阻止用户直接修改浏览器地址栏跳转,但是保留浏览器前进后退功能

app.components.ts
import { PlatformLocation } from '@angular/common';
constructor(private location: PlatformLocation){
   // 监听直接修改地址栏url实现路由跳转
     this.location.onPopState((e) => {
       // 当用户不是点击浏览器前进后退时标记阻止
       if (!e.state) {
         this.xhr.cnRouterLinkFlag = true;
       }
     });
 }

 

auth.guard.ts

canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
    return this.checkLogin(route, state);
}
async checkLogin(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {   // 禁止直接修改地址栏url或者点击浏览器前进后退实现路由跳转   if (this.xhr.cnRouterLinkFlag) {     this.xhr.cnRouterLinkFlag = false;     return false;   }
}

 

  

posted @ 2022-05-06 14:55  抽风的皮鞭  阅读(73)  评论(0编辑  收藏  举报