0
私はIonicをはじめて使用しており、認証されていないユーザーをログインページにリダイレクトしようとしています。Ionic 3 unauthenticated user redirect
ログインすると、ユーザーはローカルストレージ内に保存されているjson-web-tokenを取得します。また、トークンが有効かどうかを確認するloggedIn()
メソッドを持つ認証サービスもあります。私HomePage
コンポーネント内
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');
}
...
}
ページがロードされる前に、ユーザーがionViewCanEnter()
で、ログインしている場合、私はその後、確認してください。
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);
}
}
ログインせずにメンバーエリアに入ると、ページが読み込まれません。これは問題ありません。残念ながら私はリダイレクトされていない、私は空白のページに残っています。
@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
感謝をリダイレクトラップする必要がありイオン性の問題のようなものです – Nico