javascript - 在没有 authguard 的情况下禁用 Angular 7 中的 url 更改导航或直接页面访问?

标签 javascript angular typescript url url-routing

嗨,我正在寻找一种方法或建议,如果用户更改 url 来访问不同的页面,如下所示 enter image description here

它将限制用户和用户重定向到同一页面,是否有任何方法可以在不使用 Authguard 或不使用任何模块的情况下执行?

我的 stackblitz 项目不起作用

Here

最佳答案

当用户手动更改其网址时,您的应用程序将被卸载并再次加载。 您可以使用 javascript 进行一些修改,例如在卸载时写入 url,然后在加载时将其返回

window.addEventListener('beforeunload', function(e) {
  localStorage.setItem("appUnloading", JSON.stringify({time: Date.now(), url: location.pathname}));
};
.....
export class GuardForAllRoutes {
  constructor(private router: Router) {}
  canActivate() {
    const appUnloadingState = localStorage.getItem("appUnloading");
    let time, url;
    if(appUnloadingState) {
      {time, url} = JSON.parse(appUnloadingState);
    }
     if(Date.now() - time < 10000) { //let say your page will be loaded for no more that 10 seconds
        return this.router.parse(url); // this won't work on old angular versions. use router.navigate instead
     }

  }
}

关于javascript - 在没有 authguard 的情况下禁用 Angular 7 中的 url 更改导航或直接页面访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59982123/

相关文章:

带有 Haml 的 Angular2

javascript - 将时刻格式化为字符串

typescript - 合并 TypeScript 中对象元组的值类型

javascript - `await`什么时候同时解析?

javascript - 展平数组 : where does the 0 come from?

angular - 如何使用 Angular Material 在工具提示中选择垫子选择值

javascript - Angular Material,Md-datepicker - 在输入点击时打开日期选择器

node.js - 防止在类上使用 TypeScript 'interface-style' 字段初始值设定项

javascript - 如何使用 php-phantomjs 在 headless chrome 中执行 Javascript?

javascript - 解析 JSON,浏览器将其视为字符串数组,而不是对象数组