Ionic Auth Gaurd canLoad 基于 public 布尔数组

Ionic Auth Gaurd canLoad based on public boolean array

情况: 我正忙于开发一个在线课程,用户必须按顺序浏览一系列页面,但我想阻止他们导航到其他页面。如果他们尝试这样做,则当前页面会再次加载。

我的想法: 我创建了一个 public 布尔数组来跟踪用户的进度(示例如下):

progress: [boolean, boolean, boolean] = [true, false, false];

End of Page 1:
progress[0] = false;
progress[1] = true;
End of Page 2:
progress[1] = false;
progress[2] = true;

我的问题是:如何使用auth guard canLoad禁止用户访问基于进度数组的任何其他页面?

我有很多页面,很想使用一个 Auth Gaurd 来执行检查,而不是为每个页面都创建一个保护。

很难给你确切的代码,但下面是我如何做的有点天真:

在所有页面可用的共享提供程序中创建一个对象来跟踪进度:

public progress: {
     pageRoutePathName1: boolean,
     pageRoutePathName2: boolean,
}

基本上对象的属性应该等于你的路由的路径值

然后只需按照您的想法更新对象布尔值的状态即可。

将此类共享提供程序导入到您的负载防护中,并为 canLoad 方法利用该对象:

canLoad(route: Route, segments: UrlSegment[]): Promise<boolean> | boolean {

    if (this.sharedProvider.progress[route.path] === true) {
        return true
    } else {
        return false
    }

}

我找到了符合我问题的帖子。 答案对我有用 - 它在按钮导航前后切换一个布尔值(禁止导航我的手册 URL 条目)。