Ionic保持登录状态

时间:2020-01-02 04:08:27

标签: angular routing guard

看,我的离子项目中有一个页面,它是一个简单的登录表单,用户在其中输入其CPF,然后重定向到一个页面,在该页面中它将创建新密码或键入现有密码。 哪有问题如果用户试图在登录前访问home.page,我就对其进行了简单的路由防护,阻止了用户

auth-login.service.ts

authenticatedUser: boolean;

private validatedPassword: number;

 validatePassword(user, password) {
      this.http
          .get<RootObject>(
              environment.url + environment.token + '&Metodo=alunoCheckPwd&AlunoIDMain=' + user.id + '&AlunoPwd=' + password
          )
          .subscribe(response => {
              this.validatedPassword = response.LOGIN_SENHA.Password;

              if (this.validatedPassword === 1) {
                  this.loggedIn();

              } else {
                  alert('Invalid Password');
              }
          });
  }

 loggedIn() {
      this.authenticatedUser= true;

      this.router.navigateByUrl('/home');

  }

 userIsAuthenticated() {
    return this.authenticatedUser;
 }

auth-guard.ts

      route: ActivatedRouteSnapshot,
      state: RouterStateSnapshot,
  ): Observable<boolean> | boolean {

    if (this.authLoginService.userIsAuthenticated()) {
      return true;

    } else {
    this.router.navigateByUrl('/login');

    return false;
    }

  }

警卫工作得很好。

出什么问题了?我如何保持该用户登录?因为此时,用户每次打开应用程序时都必须登录。

1 个答案:

答案 0 :(得分:0)

loaclStorage API已经可用,因此在方便保存信息时,您需要做的就是:

localStorage.setItem('logged_in', true); // or false

并使用以下方法检索值:

localStorage.getItem('logged_in'));

大概是在确认密码的那一刻保存此密码,并在登录屏幕加载时或在此之前的某个时候取回密码。

还有其他处理会话的方法要比这更好,但是作为一种简单易用的方法,以上已足够。