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

angular - Angular 路由守卫 - 调用签名问题

我正在尝试构建一个路由保护类,只允许管理员用户访问特定页面。这是我的 admin.guard.ts

这是 admin.guard.ts 调用的我的用户服务(我只是在这个阶段硬编码一个真或假,直到我让警卫工作)。

我遇到的问题是以下错误

0 投票
3 回答
11501 浏览

angular - Angular 4在初始化应用程序之前加载数据

我正在尝试在我的应用程序启动之前加载一些数据。我之所以需要这样做,是因为某些菜单根据某些用户条件(例如,基于用户位置)限制了访问。

因此,如果用户还没有位置或者它的位置没有启用访问某些视图,我需要阻止它。


我尝试使用 Angular Resolve 方法,但没有成功,这就是我所做的:

解决守卫

路由

AuthGuard 只是要检查一个有效的 cookie 会话。

如您所见,我试图阻止访问的路由是company路由。当我第一次加载另一个页面时,我可以阻止访问,例如,如果第一次访问该页面home,然后我导航到该页面company,则验证工作正常,因为用户数据和位置已经可用。

但是,如果第一次访问页面company,它将阻止所有用户导航到那里,因为在LocationGuard尝试验证用户位置时,数据还不可用。

我也尝试用 替换ResolveCanActivate但在数据可用后它永远不会启用视图,它停留在空白页面上。

0 投票
1 回答
937 浏览

angular - 通过浏览器手动更改 url 时触发保护以重新渲染组件

我这样设置路由

一切正常,但是当我将 url 从更改/:parent/:child/:parent. 我想使用从 ParentResolve 获取的参数重定向到子路由。

我的问题:当我手动更改 url 时,Angular 不会调用 Resolve guard,因此我无法重定向到子路由。

不清楚的请追问,谢谢。

0 投票
1 回答
2386 浏览

angular - Auth Guard 应用于 angular2 中的延迟加载模块,但它仍然在重定向,尽管被拒绝 canLoad 不起作用

假设 Return false 将在 http 调用上的身份验证中返回,但现在我从 CanLoadChildren() 方法返回 false 以测试 canLoad 但是尽管调用 canLoad 并返回 false canLoad 仍然加载模块并重定向到该模块。任何人都可以帮助? 谢谢

身份验证服务

验证保护文件

app.router.ts

0 投票
0 回答
805 浏览

angular - Angular 2 Guards:canLoad() 是否有任何原因触发两次?

canLoad 在拒绝或接受时触发两次

canLoad 实现

调用的服务方法

假设 Observale 布尔响应将被返回

0 投票
0 回答
507 浏览

angular - 使用 useHash 时,Angular RouterStateSnapshot 参数为空:true

我正在访问我的 Angular 4 应用程序的 URL 参数,RouterStateSnapshot它工作得很好:

问题是,一旦我编辑我的RouterModule配置并设置useHash: true上面的代码由于某些原因停止工作,因为state.root.queryParams它将始终为空。

为什么会这样?如何解决问题?

0 投票
1 回答
62 浏览

javascript - 如何解决 Angular4 路由器中的转换问题

我正在尝试链接路由器解析器

这是我的路由器选项。

我想调用SessionService(SessionResolve),然后使用 Session 数据的 lang 值调用LocaleService(LocaleResolve)

但是,上述代码调用同时解析

我认为在这里解决代码更改 但我不知道,因为我以前没有使用过 Angular4。

有没有办法可以使用 resolve 作为 chanining?还是我应该一次解决所有工作?

0 投票
1 回答
1825 浏览

javascript - 守卫中不可用的路由参数

为什么id在下面的守卫中不可用?

在组件内部实现时,相同的代码可以完美运行。

0 投票
2 回答
3171 浏览

angular - 如何在 Angular2 应用程序的 CanDeactivate 中显示模态确认?

我有一个 Angular2 应用程序。它的一个组件实现了 CanDeactivate 接口,以确认用户离开页面的导航。下面是路由守卫的实现:

这是组件的代码:

现在,我想显示一个自定义模式窗口而不是浏览器的确认框。我用 Telerik 的 Kendo UI 构建了这样的窗口:

如果我在代码中的任何位置设置userConfirm = true ,则此模式窗口有效,除了 canDeactivate() 方法。

如何使用此模式窗口来获取用户的输入?

谢谢你。

0 投票
2 回答
3740 浏览

angular - lazy-loaded child route loads twice in Angular

I am confronted with the following issue: the personal section which is protected via an AuthGuard Service is loaded twice when I navigate to it or by browser refresh. Second time it strips away the query parameters of the URL if I provide any. Here is my app router configuration:

and the child router configuration

The AuthGuard Service (whereby if it only returns true is the same behaviour):

And the Navbar template:

The project is available on Github and the faulty behaviour can be tested at https://www.codingmarks.org/personal by logging in with username/pwd - test@codingmarks.org/Test_user1$

UPDATE Even if I remove PersonalBookmarksComponent and move AuthGuard to the PersonalBookmarks module the wrong behaviour still persist... The routes for PersonalBookmarksModule look something like the following:

UPDATE2: The stripping away of the query parameters was due to the redirection forced when logging in with Keycloak.

False:

Correct: