【问题标题】:How to Invalidate session once page refresh in angular4如何在角度 4 中使页面刷新时的会话无效
【发布时间】:2019-03-21 20:41:32
【问题描述】:

单击浏览器刷新按钮后,我想使会话无效并重定向到登录页面。我尝试使用@HostListener,页面重定向到登录,但再次进入同一页面。

@HostListener('window:beforeunload', ['$event']) unloadHandler(event: Event) {
    // console.log("Processing beforeunload...");
    // event.returnValue = false;
     this.router.navigate(['/']);
    return false;
} 

【问题讨论】:

  • 您可能对login 组件有一些重定向逻辑,例如已经登录导航到仪表板。您必须重置 (already logged in) 的值

标签: angular


【解决方案1】:

@Vishnu 试试这个...

清除您用于Authenticationbrowser storage's,如果您在应用程序中使用任何全局变量进行绑定,则重定向到登录页面。 p>

localStorage.clear();
sessionStorage.clear();
this.router.navigate(['/login'])

我希望这会奏效......

【讨论】:

  • 我可以在清除会话后重定向到登录页面。感谢您的宝贵建议。
【解决方案2】:

以 Angular 刷新页面意味着您的整个 Angular 应用程序将重新启动。由于您的应用正在重新启动并且您想要使会话无效,因此在您的应用本身启动时清除所有会话或本地变量,更好的地方是在 app.component.ts 的 ngOnInit 中执行此操作。

【讨论】:

    【解决方案3】:

    我的建议是保留一个 isrefresh 变量来加载页面

    this.router.navigate(['/dashboard', { isrefresh:false }]);
    

    在仪表板的加载事件中,检查 isrefresh 是否为真。如果为真,则重定向到登录页面。

    this.route.paramMap.pipe( switchMap((params: ParamMap) => { 
    this.isrefresh = params.get('isrefresh'); 
    })
    );
    
    
    
    If (isrefresh){
    //Redirect to login page
    }
    

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 2020-02-12
      • 1970-01-01
      • 2022-11-27
      • 2018-01-18
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多