Как сохранить значения переменной при обновлении страницы - PullRequest
0 голосов
/ 28 мая 2018

У меня есть метод canActivate.Когда я пою на своем веб-сайте, я устанавливаю переменную типа boolean true.И мой canActivate работает с этой переменной.Но если я обновлю страницу, значение вернется в false.Мне нужно сохранить значение, если страница обновляется

Коды

export class AuthService{
   loggedin = false;

   isAuthenticated(){
     return this.loggedin;
   }

   login(){
     this.loggedin = true;
   }

   logout(){
     this.loggedin = false;
   }
}

и canActivate

@Injectable()
export class AuthGuard implements CanActivate{

   constructor(private authService: AuthService, private router: Router){}

   canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean{
     if(this.authService.isAuthenticated()){
       return true;
     }else{
       this.router.navigate(['/']);
     }
   }
}

при входе в систему я вызываю функцию login и устанавливаю значениек истине.Но если я перезагрузить страницу, значение сбрасывается на false.Мне нужно сделать истину в значении.Одним из способов изменить значение является вызов метода logout.Почему я могу это сделать?

1 Ответ

0 голосов
/ 28 мая 2018

Используйте localStorage, вот ваши рефакторинговые методы, они должны работать как:

   isAuthenticated(){
     return localStorage.getItem('loggedin', true);
   }

   login(){
     localStorage.setItem('loggedin', true);
   }

   logout(){
     localStorage.removeItem('loggedin'); // here you can either remove the item or use setItem and simply assign a false value localStorage.setItem('loggedin', false);
   }

Теперь, когда вы обновитесь, ваше приложение будет проверять isAuthenticated (), которое, в свою очередь, будет проверять хранилище на значение.

...