问题标签 [angular-route-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 回答
321 浏览

angular - Angular-Route Guard 总是在导航前重定向到主页

我正在尝试在我的网站上实施路由保护。它检查令牌,然后返回真或假。如果它返回false,它应该重定向。但是,当它应该导航时,它首先会转到“/”路线,然后再转到所需的路线。

例如。

当前行为

检查令牌。

令牌返回 false。

重定向到“/”

然后导航到“/me/courses”

预期行为

检查令牌。

令牌返回 false

导航到“/我/课程”

这是我的路线守卫

这是我检查令牌的代码

0 投票
1 回答
1511 浏览

angular - 如何在 Angular 7 的路由保护子句中访问路由参数?

我有一个 Angular 7 应用程序,其中有这样的路线

现在我试图访问这条路线paramsroute-guard但我没有得到路线参数。这是我的forgotpassword.route.guard.ts

但它给出了这个错误

在此处输入图像描述

我究竟做错了什么?

0 投票
1 回答
127 浏览

angular - 如何在angular7中的路由保护内进行http post调用?

我有一个 Angular 7 应用程序,其中我有一个电话后呼叫,并且基于该电话后响应,我想让警卫处于活动/非活动状态。我有这样的路线守卫

但问题是,当我的http post通话正在进行时,我的警卫完全执行并返回 false,之后响应来自 post call。我该如何管理这种情况,以便根据http post呼叫响应使路由为真或假。

0 投票
1 回答
1089 浏览

ionic-framework - TypeError:无法读取 IONIC 5 中 null 的属性“canDeactivate”

我无法在 Ionic 5 中实现 canDeactivate 防护。以下是我的代码。

模型.ts

离开page.guard.ts

测试页.ts

家庭路由.Module.ts

离开时出现以下错误TestPage。我尝试LeavePageGuard在 App Module 和 TestPage Module 中添加作为提供程序,但仍然遇到相同的错误。

0 投票
1 回答
218 浏览

angular - canActivate 和 NGXS 选择器

我在 SomeService 中有 NGXS 选择器

我在这样的 Angular RouteGuard 中使用它

我收到一个错误“声明类型既不是 'void' 也不是 'any' 的函数必须返回一个值”。我知道原因,因为它没有返回订阅之外的任何内容,但我只想在执行订阅时返回。

0 投票
0 回答
68 浏览

angular - Unable to route to same/current page in angular using route guard with setTimeout()

I am unable to route to same page and I am not sure what is missing here. If I remove the setTimeout function it is working fine, but not working with setTimeout.

Is there any way I could delay the routing?

Here is my SamplePage which will just consume the message from route parameters. The html file just displays the message.

SamplePage

SampleGuard This just navigates to the same page 6 times and then returns false.

Thanks in advance.

0 投票
1 回答
220 浏览

node.js - 首次登录失败,刷新页面强制用户在Angular+(Node/express).js中注销

当我第一次尝试登录时,它确实对用户进行身份验证并将 AuthService 中的 loggedInStatus 设置为 true,但 AuthGuard 中的 loggedIn 设置为 false,因此不允许导航到仪表板。console.logs 的序列也已超出顺序,即首先记录 GUARD,然后记录 LOGGEDINSTATUS,而它应该与此相反。在我第二次尝试成功登录并导航到仪表板后,在重新加载页面时,它会将我重定向到登录页面,并且 AuthGaurd 中已登录的值未定义。

登录组件打字稿

身份验证服务

AuthGuard

auth.js(路由)

服务器.js

0 投票
3 回答
171 浏览

angular - 角度方法不保存变量的值

我正在 Angular 中创建一个 Route Guard;它的运作方式取决于您是否与公司有关联;它会将您发送到特定组件。Unfourtnetly,当运行 canLoad 方法时,它不会保存 companylist 变量的值。任何帮助,将不胜感激!

[在此处输入图像描述]这是我在控制台中返回的内容

0 投票
2 回答
272 浏览

angular - 基于集合查询结果的Angular Route Guard

我在 Firestore 中有一个“团队”系列。团队文档将包含一个team_users地图字段,userID: true如果他们是该团队的一部分。

team_users我在服务中有一个查询,该查询返回并显示所有团队文档,其中登录的用户 ID 与字段中的 ID 匹配。

我需要实现的是执行以下操作的路由守卫:

  1. 防止用户访问他们不属于/曾经属于的团队。例如,如果用户在 中时有一个文档的书签Team A,但后来离开了,他们应该无法访问此路由,而是应该重定向回/teams
  2. 如果用户不属于任何团队(集合查询不产生任何结果),则无法从/teams列表 url访问路径

注意:一个用户可以是多个团队的一部分。如果用户是 A、B 和 C 组的成员,并且在 A 组中拥有页面的书签,但后来离开了,则路由守卫应阻止他们访问属于 A 组的任何页面,但仍允许访问B 组和 C 组页面。

这是否意味着:

  1. 我的应用程序中的每个 URL 都需要这个保护吗?
  2. 我的应用程序中的每个 URL 都需要包含团队 ID?

任何帮助将不胜感激。

0 投票
1 回答
32 浏览

angular - How to determine route prior to route guard Angular?

so I have lets say 2 routes '/admin-route' and '/superuser-route' and both require 'admin' and 'superuser' privileges respectively to access these routes.

When user clicks on this route I check privileges and if they're false for that user I activate a '/no-access' route guard.

The challenge is that I have breadcrumbs in my app and if the user gets a no-access state I want to display in the breadcrumbs which route he previously accessed.

So if user tries to access '/admin-route' and he doesn't have admin rights the no-access route guard kicks in and I want to have displayed in the breadcrumbs 'Admin' and the same if user tries to access '/superuser-route' and gets no-access page I want 'Superuser' breadcrumb.

I'm having a challenging time figuring out how to tell the route guard which was the previous route to be able to display the correct breadcrumb.

I hope this isn't too confusing and any help is appreciated!