【ionic2】ログイン機能を実装する
はじめに
今回やりたかったのは、まぁ普通のログイン機能をもつアプリ。実装したい要件としては以下
・未ログインの場合は、ログイン画面を表示。
・ログイン済の場合は、他の画面が見れる。
実装方法としては以下のような形で行ってみた。
・ログイン済みかどうかはローカルストレージに保存して判定する。
・app.component.ts の platform.ready()でローカルストレージをチェック。
・ログイン済みの場合は他の画面を表示
・未ログインの場合はログイン画面を表示。ログインに成功したらローカルストレージに書き込んでindex.htmlをリロードする。リロードすることでplatform.ready()が再度呼ばれるので次はログインと判定されるはず。
実装
src/app/app.component.ts
・・・
import { Storage } from '@ionic/storage';
・・・
export class MyApp {
rootPage:any;
constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, storage: Storage) {
platform.ready().then(() => {
statusBar.styleDefault();
splashScreen.hide();
storage.get('auth').then((val) => {
if (val == null) {
// 未ログインの場合はログイン画面を表示
this.rootPage = 'signin';
} else {
// ログイン済みの場合はその他の画面を表示
this.rootPage = 'home';
}
});
});
}
}src/pages/signin/signin.ts
import { Storage } from '@ionic/storage';
・・・
export class SigninPage {
・・・
// ログイン
signin() {
this.ApiService.get('/signin', {})
.then(data => {
// ログインに成功したらログイン情報をローカルストレージに保存して、リロード
this.storage.set('auth', { token:data.token });
location.reload();
})
.catch(messages => {
alert(messages);
});
}
/* ログアウトも手抜きここで書いちゃう */
signout() {
// ローカルストレージを削除してリロード
this.storage.remove('auth');
location.reload();
}
}なんか正当な方法じゃなさそうだけど、自分がやってるアプリだとこんなので十分事足りそう。以上です。