嗨,我正在寻找一种方法或建议,如果用户更改 url 来访问不同的页面,如下所示
它将限制用户和用户重定向到同一页面,是否有任何方法可以在不使用 Authguard 或不使用任何模块的情况下执行?
我的 stackblitz 项目不起作用
最佳答案
当用户手动更改其网址时,您的应用程序将被卸载并再次加载。 您可以使用 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/