我尝试了许多其他答案,但没有一个真正适合我。但这一个有效:
要在注销后禁止登录“返回”到经过身份验证的页面,只需在您的 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'));
}
希望这会有所帮助。