首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ionic 3未经验证的用户重定向

Ionic 3未经验证的用户重定向
EN

Stack Overflow用户
提问于 2017-11-23 20:45:59
回答 1查看 2.1K关注 0票数 0

我是第一次使用Ionic,我尝试将未经身份验证的用户重定向到我的登录页面。

登录时,用户将获得存储在本地存储中的json-web-token。我还有一个身份验证服务,它有一个检查令牌是否有效的loggedIn()方法。

代码语言:javascript
复制
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { tokenNotExpired } from 'angular2-jwt';
import { Storage } from '@ionic/storage';


@Injectable()
export class AuthServiceProvider {

constructor(
  public http: HttpClient,
  public store: Storage,
 ) { }

 ...

 public loggedIn(): boolean {
   return tokenNotExpired('__local/_ionickv/token');
 }

 ...

}

在我的HomePage组件中,在页面加载之前,我检查用户是否已经使用ionViewCanEnter()登录。

代码语言:javascript
复制
import { Storage } from '@ionic/storage';
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { LoginPage } from './../login/login';
import { AuthServiceProvider } from './../../providers/auth-service/auth-service';

@IonicPage({
name: 'home',
})
@Component({
  selector: 'page-home',
  templateUrl: 'home.html',
})
export class HomePage {

constructor(
  public navCtrl: NavController, 
  public navParams: NavParams,
  public auth: AuthServiceProvider,
  public store: Storage,
) { }

ionViewCanEnter(): boolean {
  if(!this.auth.loggedIn()){
    this.navCtrl.setRoot(LoginPage);
  }
  return this.auth.loggedIn();
}

public logout(): void {
  this.auth.logout();
  this.navCtrl.setRoot(LoginPage);
}

}

当我尝试在没有登录的情况下进入会员区时,页面没有加载,这是正常的。不幸的是,我没有被重定向,我被留在了一个空白页上。

代码语言:javascript
复制
@ionic/cli-utils  : 1.19.0
ionic (Ionic CLI) : 3.19.0
@ionic/app-scripts : 3.1.0
Ionic Framework    : ionic-angular 3.9.2
Node : v8.9.1
npm  : 5.5.1 
OS   : Linux 4.10
EN

回答 1

Stack Overflow用户

发布于 2018-01-09 09:03:51

这是一种离子问题

作为目前的解决方法,我必须在setTimeout中包装重定向

代码语言:javascript
复制
ionViewCanEnter(){
    if(!this.authService.authenticated){
      setTimeout(()=>this.navCtrl.setRoot('login'))
    }
    return this.authService.authenticated
  }
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47455898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档