【问题标题】:Angular guard not being invoked when navigating back to application after sign out redirect退出重定向后导航回应用程序时未调用 Angular 防护
【发布时间】:2022-08-19 00:24:16
【问题描述】:

我的 Angular (v13.3.11) 应用程序在所有主要路由上使用保护来验证用户是否已登录。

当用户注销时,他们被重定向到 OpenID Connect 结束会话端点,然后重定向回我的应用程序的注销页面。

问题是:

退出并重定向到退出页面后,单击浏览器后退按钮允许用户导航回上一页(退出之前的位置)。

身份验证保护的 canActivate 方法以及任何其他 Angular 生命周期方法(ngOnInit、ngOnDestroy 等)都没有被调用。因此,用户能够在页面上执行操作。似乎应用程序处于某种缓存状态。

这只发生在 Angular 生产版本 (v13.3.11) 中,主要是在 Chrome 隐身版中。我可以在其他浏览器中复制这一点,但您必须完美地点击浏览器后退按钮。

谢谢大家,这个问题把我难住了。欣赏任何见解。

    标签: angular openid-connect


    【解决方案1】:

    您可以在路由上使用runGuardsAndResolvers 参数来强制重新计算您的守卫和解析器。例子:

    export const routes: Routes = [
      {
        path: '',
        canActivate: [AuthGuard],
        runGuardsAndResolvers: 'always',
        children: [
           ....
        ]
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      相关资源
      最近更新 更多