我不想在重新加载页面角4后进行注销

时间:2017-08-22 12:59:10

标签: angular typescript logging angular-cli

它在刷新页面后退出,如何在重新加载后让用户登录?

这是header.component.html:

<li class="nav-item dropdown-menu-left" ngbDropdown dir="rtl">
    <a href="javascript:void(0)" class="nav-link" ngbDropdownToggle> John Smith </a>
    <div class="dropdown-menu dropdown-menu-left">
        <a class="dropdown-item" (click)="onLoggedout()">logout</a>
    </div>
</li>

这是注销功能:

onLoggedout() {
    this.authService.logout();
    this.router.navigate(['/login'])
}

这是authService:

logout(){
    firebase.auth().signOut();
    this.token = null;
}

这是auth-guard.ts:

constructor(private router: Router, private authService:AuthService) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    return this.authService.isAuthenticated();
}

3 个答案:

答案 0 :(得分:2)

我了解您的问题,您需要按照以下步骤操作:

  • Firstyl在您登录时需要将token存储在本地存储中。 (我假设token关键字为用户登录的标志

  • 使用

    注销后清除本地存储

    localStorage.clear();

  • 与您的情况一样,一旦您按下back button浏览器用户将不允许在登录前访问页面,为此您需要在authGuard文件中进行更改,如下所示

     constructor(private router: Router, private authService:AuthService) { }
     canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
       if(localStorage.get('token'))
           return true;
       else
           return false;
      }
    

如果还需要任何帮助,请告诉我。

答案 1 :(得分:0)

我不知道,您希望答案。但您可以尝试将令牌保存到localStorage。

答案 2 :(得分:0)

将您的会话保存在Cookie中,并在每次检查会话的Cookie是否存在时进行检查。此库可帮助您轻松管理Cookie Angular2-cookie