问题标签 [angular-guards]

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 回答
580 浏览

angular - Angular + ngrx:必须从其他地方取消异步 canActive Guard

正如标题所说:有没有办法告诉路由器取消当前的导航?

情况如下:

  • 路由守卫分派一个动作。
  • 效果基于该操作执行异步调用。
  • 完成后,异步调用将在属性上调度存储更新操作。
  • 守卫订阅了该属性的选择器(比如“property$”)
  • 一旦该属性 $ 更新,守卫决定是否允许导航。

此方法仅在效果的异步操作请求的资源正确返回时有效(HTTP 200)。但是如果操作失败(比如 HTTP 404),问题就在这里:

  • 守卫不会批准也不会拒绝导航。它处于未决状态,并且在守卫返回 true 或 false 之前不会发生其他导航请求。

有没有办法实现一个调用,例如,天真地说:this._router.cancelAllNavigationRequests()

0 投票
0 回答
410 浏览

angular - Angular - 受限页面在守卫中显示为 window.open 重定向

我正在实现一个 canActivate Guard,它具有在用户未登录时重定向到登录站点的逻辑。到目前为止,我遇到的所有示例和修复都在处理 Angular 本身定义的登录页面。就我而言,登录位于单独的子域上。

重定向按预期工作,但由于外部重定向,浏览器中显示受限页面,然后重定向开始。

我已经通过@inject 尝试了 window.open 和文档。

使用 Angular 5.2.5

这是我的auth.guard.ts

应用程序路由.module.ts

0 投票
4 回答
8039 浏览

angular - getting variable data outside subscribe method

I am trying to implement canActivate for user routes, before that I want to check whether the access token is still valid or not. Therefore I implement something like this

here I can get the data variable inside the subscribe method when I console it but outside this method is give undefined value. How can I access it outside the method.

0 投票
1 回答
92 浏览

angular - Angular2 身份验证卡导航到主页

我是 Angular 2 的新手,实际上我在刷新其重定向到登录页面时遇到了问题,但实际上我想重定向到仪表板

路由模块:

0 投票
1 回答
37 浏览

angular-guards - 在 Angular 4 防护中使用服务

请协助角卫队,我在下面有以下角卫队:

在服务中:

我正在尝试订阅该getUserRole()功能,然后将响应分配给this.role但没有发生,角色总是undefined。当我这样做时,我会...subscribe(res => console.log(res))看到响应数据。

0 投票
0 回答
658 浏览

node.js - Angular 2 身份验证保护 http GET 请求以检查用户是否有会话

我正在尝试调用 http GET 方法来检查用户是否与我的后端 NodeJS API 进行了会话,但我看不到正在发出的请求。

我在用户登录时设置了一个 observable,所以我的 AuthGuard 将首先检查它,如果它设置为 false,则调用后端以查看是否存在现有会话。

auth.guard.ts

应用程序.js

我知道我的 apiURL 没有任何问题,因为进入登录页面并登录工作正常,并且我可以看到后端日志记录。

谁能看到为什么我的http请求不起作用?

0 投票
1 回答
933 浏览

angular - CanActivate 将我返回到空白页面而不是重定向

我的守卫将我返回到一个空白页面,而不是重定向我。此外,我的 root 不是一个空白页面,它也应该让我登录。当我转到任何supervisor页面时都会发生这种情况。

这些是我的路线:

这是我的警卫:

服务:

0 投票
2 回答
85 浏览

angular - Angular 2+:在运输查询参数中访问路线而不是当前活动路线

问题:我正在尝试访问路由保护正在检查的查询参数,而不是当前的 url 快照查询参数。

ActivatedRoute 只显示他们当前的路由状态,而不是正在传输的路由状态。因此,如果我在“app/users/list”页面上,当为 canActivatedChild 守卫拉取信息时,路由快照是“app/users/list”,但我试图访问他们要去的链接,而不是在哪里他们来自。(这是 Angular 应该做的;这是当前活动的快照)

问题:如何访问假设要防范的正在传输的孩子的查询参数路由?

场景:我有一个用户的列表,每个用户在进入仪表板之前可以去仪表板或编辑器屏幕完成。因此,当用户从用户列表表中单击用户时,路由守卫应该在进入仪表板之前检查用户是否有某些属性不为空,如果他们有一些空属性,则由守卫指导到编辑器页面。仪表板页面由 canActivatedChild 保护器保护,该保护器根据用户是否具有所有可用信息来决定是否可以在仪表板中显示用户的详细信息,如果没有,则将其重定向到编辑器以完成。

目标 从仪表板链接获取查询参数,而不是当前活动用户的列表页面。

我得到的唯一解决方案? 正在考虑将用户传递给服务,并让守卫访问服务以提取信息。

0 投票
1 回答
1073 浏览

angular - 通过 ngrx select 检查多个值的保护

我有一个 canActivate (guard),我正在检查加载的变量以查看队列是否已加载。

但是,我现在需要检查多个队列加载变量( boolean )以查看它们是否已全部加载。然后我将需要调度操作。

我们如何结合所有这些 NGRX 选择(优化方法)来检查它们的布尔值并激活守卫?

0 投票
1 回答
104 浏览

angular - 带有参数的特定路由的用户访问

我正在将 Angular 与 Firebase 一起使用。在我的应用程序中,用户可以创建“项目”并邀请其他用户加入该“项目”,换句话说,一个项目可以有多个用户。我在firestore有user收藏和project收藏。

用户集合

集合中users是具有 id 值和数据的文档(只是名称)

项目集合

集合中project是具有 id 值和数据的文档。数据是 projectName 和用户数组。在这个用户数组中,我有可以访问该项目的用户 ID。

设想

用户登录我的应用程序,现在他在 route 的简单介绍页面中/hello。现在用户可以看到他的项目,当他点击某个项目时,他将被路由到该路径/project/:id,在这里他可以使用其他功能,例如/project/:id/overview。它类似于firebase控制台https://console.firebase.google.com/u/0/project/myprojectid/authentication/users:)我希望我只是澄清我想要实现的目标。如果您仍然感到困惑,请在评论中告诉我。

有什么问题?

在我的项目中,这很好用,但问题是当有人将不同项目的id复制到 url 并点击输入时。我想阻止用户访问其他用户的项目,所以如果我/project/notMyProject/overview在 url 中输入这个路径,我应该被重定向或其他东西。嗯,这很容易,只需创建我认为的路由器保护。于是我开始...

应用程序路由.module.ts

项目.guard.ts

我在这里。我对 rxjs 和所有可观察的东西都很陌生。该代码是异步的,我不知道如何使它工作,我收到错误,我必须返回 Observable 或布尔值......

问题

我对这个特定问题的一般方法是否正确?我应该考虑一些更好的选择吗?其他页面如何解决这个问题,例如 firebase(试试这个Firebase)。如果我的解决方案很好,你能帮我解决我的 project.guard 吗?非常感谢

我试图尽可能清楚地描述我的问题。如果您遗漏了一些信息,请在评论中告诉我,我会更新我的问题。我搜索了很多小时如何解决这个问题,但我找不到任何东西,或者我只是使用了错误的搜索关键字。我希望这对其他人也有帮助。