问题标签 [canactivate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 从角度的子节点路由到另一个根节点的正确方法是什么?
我有一个登录页面和一个延迟加载的模块,其子模块构成了应用程序中的大部分页面。这里看看 app-routing.module.ts
现在我有一个有几个子页面的主模块。我们来看看 main-routing.module.ts
在 RouteGuard 中,如果用户未登录,我们将他们重定向到 /login
问题是路由器试图path:'login'
在 MainRoutingModule 的路由中查找,而“登录”实际上是 AppRoutingModule 路由的一部分。任何帮助,将不胜感激。
typescript - 应用程序组件甚至在角度保护检查来自 API 的数据之前加载
我有一个角度应用程序,其app.component.html如下所示:
' app-nav-bar ' 是一个组件,它在这个 Angular 应用程序启动时被加载,它的 nav-bar.component.ts 有 ' ngAfterViewInit ' 和一些控制台消息如下:
ngAfterViewInit() { console.log("导航栏被加载") ; }
我有一个路由模块(app-routing.module.ts),它定义路由如下:
我使用 angular Guard 服务基于 api 授权用户并激活相应的路由。 authguard.guard.ts
我没有在 app.modules.ts 的任何声明或条目组件中添加“AuthguardGuard”,现在我遇到了如下几个问题。
nav-bar.component.ts先加载,然后 auth-guard 如下:但我希望 auth-guard 先授权并加载 app-component.html,
导航栏被加载 // 从 app-nav-bar.ts 打印的控制台在 auth-guard 中成功 // 从 auth-guard.guard.ts 打印的控制台
以下错误来自 angular-auth-guard
ERROR 错误:未捕获(承诺中):错误:未找到 e 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?错误:找不到 e 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?
angular - Angular 10 - canActivate Guard 在手动输入时阻止导航以更正 URL
在我的 Angular 10 应用程序中,我有一个带有多个子路由的路由,上面有一个 canActivate 保护。
我正在尝试获取 canActivtate 保护,以防止用户输入带有 :id 和 :id/edit 路由中不存在的 ID 的 URL。canActivate 似乎在防止用户在 URL 中输入不存在的 id 方面做得很好,但问题是当用户手动输入正确的 id 时,它的行为就像它不正确一样 - 但是当单击具有相同正确ID的routerLink它可以工作。
我试图调试它,并得出结论,在下面的代码中,this.indexTypeService
应该有一个我的 indexTypes 列表实际上在该列表中没有任何内容,只有在用户手动输入任何内容的情况下地址栏:
我究竟做错了什么?
angular - Guard中的Angular canActivate函数执行了两次
我正在使用 Angular 8,如果满足特定条件,我有一个守卫使用 window.open(url) 在单独的选项卡中打开一个页面,然后返回 false,因为我不想离开当前页面上。
我在 canActivate 函数中执行此逻辑:
我的问题是 canActivate 函数被连续调用两次,这导致新标签打开两次。我该如何解决这个问题?
这就是我在 app.routing.constant 中路由到我的守卫的方式
angular - Angular canActivate 从服务中获取更新的变量
我有一个来自服务的发布请求,如果用户登录则返回,我想设置一个 authGuard 只在他们登录时显示管理面板。我的发布请求如下:
我的 authguard 具有以下内容:
但它返回 false (它在订阅之前获取布尔值)。
在发布请求运行并且值更新后如何更新它?
谢谢
angular - 从 canActivate 导航时的角度路由器无限循环
由于角度路由器需要静态路径,我使用 canActive 动态路由我的应用程序。
我的主要路线如下。
lang.select.module 是
使用 lang-choice.ts (我想在其中导航到 URI/en/
并以 /Login 组件结尾,因为我的 authentification.module.ts 如下。
我得到了函数“defaultLanguage”的正确结果,并希望导航到“localhost:port/auths/lan/en/login”,但似乎“authentification.module”模块没有加载,而是以无限循环结束。
知道为什么吗?
angular - 如何从 Angular 中的 Route Guards 传递布尔参数
我需要根据来自服务器的一些布尔配置来保护 routerLinks。目前我已经写了canActivate
路线守卫。ActivateRoutes
文件
这是我的 app.module.ts 文件
但实际上我想要的是我想将一个布尔值传递给这样的数据而不是名称。
来自我的服务类(路线守卫)。目前我正在使用地图,每次页面加载时它都会搜索所有地图以查找名称。因此,我想立即设置一个布尔值。
这是我的服务类代码。
angular - 角度路由相同路径不同的防护
我想使用相同的路径ticket
,因为我想在保存某些东西时重定向(使用相同的组件来更新票证)。但是有一个问题canActivate
。修复它的最佳方法是什么?
提前致谢。
angular - angular - 如何创建一个 canActivate 保护以仅允许来自另一个组件的重定向?
我有一个组件,我希望仅在从另一个组件重定向的情况下才允许它访问。
因此,如果我将 url 放在浏览器中,它将不允许我访问它,但是,如果我从另一个像这样的特定组件重定向到它,它将被允许:
我想添加一个类似于 authGuard 的 canActivate 守卫,如下所示:
但是通过打印状态和路由,我找不到我需要的信息,比如这个组件是否从一个角度组件(更好的是从哪个组件)重定向到内部。
编辑:我正在使用角度 11。