Я пробовал много других ответов, но ни один из них на самом деле не работает для меня.Но это работает:
Чтобы запретить входу в систему «возвращаться» на аутентифицированную страницу после выхода из системы, просто сделайте что-то подобное в вашей app-routing.module.ts
:
{
path: 'home',
loadChildren: './home/home.module#HomePageModule',
canActivate: [LoggedAuthGuard]
}
То же самоедля обратного (чтобы не вернуться на страницу входа с помощью кнопки назад):
{
path: 'login',
loadChildren: './login/login.module#LoginPageModule',
canActivate: [NotLoggedAuthGuard]
}
И оба LoggedAuthGuard
и NotLoggedAuthGuard
должны реализовывать CanActivate
.Пример кода, как показано ниже (с Promise
, но он также работает с логическим возвратом):
import { Injectable } from '@angular/core';
import {CanActivate} from "@angular/router";
import {Storage} from "@ionic/storage";
@Injectable({
providedIn: 'root'
})
export class LoggedAuthGuard implements CanActivate {
constructor(protected storage: Storage) { }
async canActivate() {
return (await !!this.storage.get('access_token'));
}
}
Для NotLoggedAuthGuard
вы просто возвращаете значение, противоположное LoggedAuthGuard
.
async canActivate() {
return (await !this.storage.get('access_token'));
}
Надеюсь, это поможет.