问题标签 [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 投票
2 回答
2389 浏览

angular - 角度返回 null 的 BehaviorSubject

我正在使用 BehaviorSubject 在登录时存储用户信息。出于某种奇怪的原因,BehaviorSubject 返回的用户信息null位于为我的端点激活的 AuthGuard 中。请帮助我了解我错过了什么。

我已经尝试将主题返回为可观察的,订阅主题 ReplaySubject。似乎没有任何效果,并且用户信息在身份验证保护中始终为空。我已经在 app 模块和服务组件之间移动了 AuthService 提供者声明。那也没有帮助。在调用 auth guard 之前,设置用户信息的流程是正常的。一旦调用 auth guard,用户信息就会丢失。

用户注册:这是用户登录的步骤

login组件:该组件设置用户信息

认证服务

auth guard:这里的用户信息为空

预期:返回当前用户信息 实际:返回 null

0 投票
3 回答
3463 浏览

angular - 如何在 Angular 中为所有路由(主路由和所有子路由)应用 canActivate 保护

我使用 Angular Guard 来保护我的路由,我在主路由中添加canActivate attr 并且它工作正常,而对于子单路由(ReportsRou​​teModule/RequestsRou​​teModule ...),如果我想启用防护,我还需要在每个路由中设置 canActivate路线,我认为这是使用角度防护的不好方法并且浪费了很多时间。那么有什么方法可以避免它并在主路由中管理它。

请看我的应用结构和一些代码如下: 1. 应用结构:

  1. 代码:主路由

子路线:

0 投票
1 回答
211 浏览

angular - canActivate - 减慢应用程序的速度。什么时候调用它?

我有一个带有 .net 核心后端的 Angular 应用程序。我正在使用 Windows 活动目录进行用户授权/识别。一切正常,但我感觉应用程序很慢......我已经确认这种情况正在发生,因为我正在检查每个组件加载时用户是否有效。

“isAuthenticated”是一种调用后端并检查用户是否有效的方法。

那么,关于处理这种情况的最佳实践有什么建议吗?

0 投票
0 回答
60 浏览

angular - 可以激活保护验证 url 参数

我正在尝试在角度中使用 canActivate 保护来验证 url 参数。我正在尝试重定向到/node-info,如果 url 参数存在,我的验证将返回 true。

重定向目前正在重定向到主页,我不知道为什么。

0 投票
0 回答
37 浏览

angular - Guard 仅重定向是应用程序已在浏览器中打开

我正在尝试使用 canActivate 保护来验证 url 参数,如果它们不匹配,那么应用程序应该重定向。到目前为止,我有以下内容:

如果我已经在浏览器中运行了该应用程序,则此方法有效,如果我使用的是新选项卡,则重定向不起作用。如果 nodeName 或 systemId 不匹配,应用程序会尝试从商店分派

0 投票
0 回答
62 浏览

angular - 单击时,重定向到 canActive 一次返回 false 的路由

我在有 3 个孩子的路线上有一名警卫。ZeroStateComponent当我没有数据时,我登陆了。在 中ZeroStateComponent,我有一个Get started按钮,应该让我再次到达Admin路线。当我单击 时,什么也没有发生Get Startednopermissions仍然可以访问,但不知何故admin没有加载路线。是因为canActivate已经返回false过一次吗?

0 投票
1 回答
56 浏览

angular - Angular Firebase Routeguard 身份验证

我实际上正在学习 Angular 和 firebase,我想在用户仪表板中添加一个路由保护,这样只有登录的用户才能查看该页面。身份验证工作正常,但我在限制没有登录用户访问用户仪表板时遇到问题这是我下面的代码。

验证服务.service.ts

这是 Authguard 服务,我尝试从我的 authservice.service.ts 中引用登录方法,但尽管我没有登录,但它仍然重定向到用户的仪表板。

authguard.service.ts

路由.module.ts

0 投票
3 回答
712 浏览

angular - AuthGuard 显示空白页

在用户登录之前,我正在使用 AuthGuard 保护组件。AuthGuards 可以工作,但是每当对组件进行更改并保存时,页面都会自行刷新并变为空白,并且控制台中没有错误。

我查看了 Stack Overflow 上发现的类似问题,但问题不同,还没有找到解决方案。

应用程序路由.module.ts:

authguard.service.ts:

我希望新更改能够立即可见,每当进行新更改时,不必一直返回登录页面,而是再次登录,然后返回组件查看新更改。

0 投票
2 回答
6052 浏览

angular - 如何在Angular程序中将未知路由重定向到主路由?

我有一个routes.ts如下文件:

和这样的auth-guard.service.ts文件:

它适用于已知路线,users但是当我尝试未知路线时homeee,它无法正常工作,并显示一个带有页眉和页脚且中间没有内容的页面。如何将所有未知路由重定向到主组件?

我也想知道这是我喜欢做的事情的好方法吗?(我喜欢只有登录用户有权查看除主组件之外的其他组件,并且登录前的所有路由都被重定向到主组件)。

0 投票
0 回答
35 浏览

angular - 当内部可观察对象发出另一个值时,canActivate 不会第二次被调用

我在方法中使用combineLatest(它结合了所有作为参数传递的 Observables 的值)canActivate

我的理解是,每当任何一个可观察对象触发时, canActivate 可观察对象都需要触发。但这并没有发生

在我的 AuthorizationGuard 中,我有以下 canActivate 方法 -

service1 checkRoles-

服务 2 -

因此,当服务 2 加载完成时……行为主体再次被触发。

但由于某种原因,canActiavte 中的 observable 没有被解雇。

知道为什么吗?