首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用角型App模型保护App

如何用角型App模型保护App
EN

Stack Overflow用户
提问于 2022-01-06 17:25:29
回答 2查看 226关注 0票数 1

我有一个大型项目使用的应用程序外壳模型。我也使用角MSAL.js (v2) (虽然这个问题可能不是特定于MSAL)。

在我的例子中,我使用MsalGuard保护了我的应用程序项目路由。但是,我也希望在应用程序构建之前调用保护检查,而不是注入到app-shell中的项目。基本上,我希望在加载任何东西之前都要检查我的警卫,包括app-shell。

因为我的所有路由都是在每个项目的内部设置的,所以只有在app-shell构建之后才会触发保护,在我可以重定向到登录页面(如果触发保护)之前,应用程序会启动更多的部分。

我试图做的是在app-shell中设置一个通用的路由保护,以便在加载shell之前触发保护。

app-shell-routing.module.ts

代码语言:javascript
复制
// imports...
const routes: Routes = [{ path: '', component: AppShellComponent, canLoad: [MsalGuard] }];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule],
})
export class AppShellRoutingModule {}

app-shell.module.ts

代码语言:javascript
复制
// imports and other configs...
...
imports: [
  ...
  AppShellRoutingModule
]
...

但是,这并不能保护应用程序外壳不被构建,而且它仍然是在身份验证重定向之前构建的(来自返回false的保护程序)。canLoadcanActivate的结果是一样的。

是否有可能保护应用程序外壳,以便在加载整个shell之前条件必须为真,而不仅仅是保护加载到shell中的项目?

总加载时间可能完全相同(一次加载发生在路由保护之前和之后,另一次加载之后发生),但我认为如果该保护被返回为false,这将是一种更好的用户体验。

EN

回答 2

Stack Overflow用户

发布于 2022-01-11 23:46:35

我不确定您的保护措施,但是如果您想阻止应用程序加载,可以将其连接到根模块: APP_INITIALIZER:伊尼蒂里泽中。如果用户不被允许你可以重定向等等..。文档中有几个例子。

票数 0
EN

Stack Overflow用户

发布于 2022-01-15 09:09:13

是否有可能保护应用程序外壳,以便在加载整个shell之前条件必须为真,而不仅仅是保护加载到shell中的项目?

据我的理解--不-- App是在构建时创建的,并创建了静态HTML --因此canLoad保护程序不会在那里提供帮助。App Shell文档

因此,我看到的唯一机会是在角引导之前检查index.html中的用户状态。这可能可以使用“标准”JavaScript msval API来完成,检查用户是否登录,如果没有隐藏<app-root>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70611081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档