问题标签 [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.

0 投票
1 回答
159 浏览

angular - 从角度的子节点路由到另一个根节点的正确方法是什么?

我有一个登录页面和一个延迟加载的模块,其子模块构成了应用程序中的大部分页面。这里看看 app-routing.module.ts

现在我有一个有几个子页面的主模块。我们来看看 main-routing.module.ts

在 RouteGuard 中,如果用户未登录,我们将他们重定向到 /login

问题是路由器试图path:'login'在 MainRoutingModule 的路由中查找,而“登录”实际上是 AppRoutingModule 路由的一部分。任何帮助,将不胜感激。

0 投票
0 回答
477 浏览

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”,现在我遇到了如下几个问题。

  1. nav-bar.component.ts先加载,然后 auth-guard 如下:但我希望 auth-guard 先授权并加载 app-component.html,

    导航栏被加载 // 从 app-nav-bar.ts 打印的控制台在 auth-guard 中成功 // 从 auth-guard.guard.ts 打印的控制台

  2. 以下错误来自 angular-auth-guard

    ERROR 错误:未捕获(承诺中):错误:未找到 e 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?错误:找不到 e 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?

0 投票
0 回答
460 浏览

angular - Angular 10 - canActivate Guard 在手动输入时阻止导航以更正 URL

在我的 Angular 10 应用程序中,我有一个带有多个子路由的路由,上面有一个 canActivate 保护。

我正在尝试获取 canActivtate 保护,以防止用户输入带有 :id 和 :id/edit 路由中不存在的 ID 的 URL。canActivate 似乎在防止用户在 URL 中输入不存在的 id 方面做得很好,但问题是当用户手动输入正确的 id 时,它的行为就像它不正确一样 - 但是当单击具有相同正确ID的routerLink它可以工作。

我试图调试它,并得出结论,在下面的代码中,this.indexTypeService应该有一个我的 indexTypes 列表实际上在该列表中没有任何内容,只有在用户手动输入任何内容的情况下地址栏:

我究竟做错了什么?

0 投票
2 回答
257 浏览

ios - 检查文本字段、文本视图和图像视图以快速激活按钮

我正在尝试实现注册视图。此视图使用图像选择器检查是否设置了图像,如果所有三个文本字段都不为空并且下面的文本视图不为空,我想实现一个激活下一个按钮的视图。

我已经通过stackoverflow实现了三个文本字段的按钮激活,但我不知道如何同时检查图像视图和文本视图。

我已经尝试了将近一个月,但我无法在脑海中想到它。有任何想法吗?谢谢!

代码:

在这张图片中,我想通过检查图像视图、文本字段和文本视图的状态来激活按钮。但我不知道如何同时检查所有三个。感谢帮助

注册查看图片: 注册查看图片

0 投票
1 回答
691 浏览

angular - Guard中的Angular canActivate函数执行了两次

我正在使用 Angular 8,如果满足特定条件,我有一个守卫使用 window.open(url) 在单独的选项卡中打开一个页面,然后返回 false,因为我不想离开当前页面上。

我在 canActivate 函数中执行此逻辑:

我的问题是 canActivate 函数被连续调用两次,这导致新标签打开两次。我该如何解决这个问题?

这就是我在 app.routing.constant 中路由到我的守卫的方式

0 投票
1 回答
56 浏览

angular - Angular canActivate 从服务中获取更新的变量

我有一个来自服务的发布请求,如果用户登录则返回,我想设置一个 authGuard 只在他们登录时显示管理面板。我的发布请求如下:

我的 authguard 具有以下内容:

但它返回 false (它在订阅之前获取布尔值)。

在发布请求运行并且值更新后如何更新它?

谢谢

0 投票
0 回答
392 浏览

angular - 从 canActivate 导航时的角度路由器无限循环

由于角度路由器需要静态路径,我使用 canActive 动态路由我的应用程序。

我的主要路线如下。

lang.select.module 是

使用 lang-choice.ts (我想在其中导航到 URI/en/

并以 /Login 组件结尾,因为我的 authentification.module.ts 如下。

我得到了函数“defaultLanguage”的正确结果,并希望导航到“localhost:port/auths/lan/en/login”,但似乎“authentification.module”模块没有加载,而是以无限循环结束。

知道为什么吗?

0 投票
1 回答
384 浏览

angular - 如何从 Angular 中的 Route Guards 传递布尔参数

我需要根据来自服务器的一些布尔配置来保护 routerLinks。目前我已经写了canActivate路线守卫。ActivateRoutes文件

这是我的 app.module.ts 文件

但实际上我想要的是我想将一个布尔值传递给这样的数据而不是名称。

来自我的服务类(路线守卫)。目前我正在使用地图,每次页面加载时它都会搜索所有地图以查找名称。因此,我想立即设置一个布尔值。

这是我的服务类代码。

0 投票
1 回答
310 浏览

angular - 角度路由相同路径不同的防护

我想使用相同的路径ticket,因为我想在保存某些东西时重定向(使用相同的组件来更新票证)。但是有一个问题canActivate。修复它的最佳方法是什么?

提前致谢。

0 投票
1 回答
430 浏览

angular - angular - 如何创建一个 canActivate 保护以仅允许来自另一个组件的重定向?

我有一个组件,我希望仅在从另一个组件重定向的情况下才允许它访问。
因此,如果我将 url 放在浏览器中,它将不允许我访问它,但是,如果我从另一个像这样的特定组件重定向到它,它将被允许:

我想添加一个类似于 authGuard 的 canActivate 守卫,如下所示:

但是通过打印状态和路由,我找不到我需要的信息,比如这个组件是否从一个角度组件(更好的是从哪个组件)重定向到内部

编辑:我正在使用角度 11。