它在刷新页面后退出,如何在重新加载后让用户登录?
这是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();
}
答案 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。