问题标签 [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.
angular - Angular 路由守卫 - 调用签名问题
我正在尝试构建一个路由保护类,只允许管理员用户访问特定页面。这是我的 admin.guard.ts
这是 admin.guard.ts 调用的我的用户服务(我只是在这个阶段硬编码一个真或假,直到我让警卫工作)。
我遇到的问题是以下错误
angular - Angular 4在初始化应用程序之前加载数据
我正在尝试在我的应用程序启动之前加载一些数据。我之所以需要这样做,是因为某些菜单根据某些用户条件(例如,基于用户位置)限制了访问。
因此,如果用户还没有位置或者它的位置没有启用访问某些视图,我需要阻止它。
我尝试使用 Angular Resolve 方法,但没有成功,这就是我所做的:
解决守卫
路由
AuthGuard 只是要检查一个有效的 cookie 会话。
如您所见,我试图阻止访问的路由是company
路由。当我第一次加载另一个页面时,我可以阻止访问,例如,如果第一次访问该页面home
,然后我导航到该页面company
,则验证工作正常,因为用户数据和位置已经可用。
但是,如果第一次访问页面company
,它将阻止所有用户导航到那里,因为在LocationGuard
尝试验证用户位置时,数据还不可用。
我也尝试用 替换Resolve
,CanActivate
但在数据可用后它永远不会启用视图,它停留在空白页面上。
angular - 通过浏览器手动更改 url 时触发保护以重新渲染组件
我这样设置路由
一切正常,但是当我将 url 从更改/:parent/:child
为/:parent
. 我想使用从 ParentResolve 获取的参数重定向到子路由。
我的问题:当我手动更改 url 时,Angular 不会调用 Resolve guard,因此我无法重定向到子路由。
不清楚的请追问,谢谢。
angular - Auth Guard 应用于 angular2 中的延迟加载模块,但它仍然在重定向,尽管被拒绝 canLoad 不起作用
假设 Return false 将在 http 调用上的身份验证中返回,但现在我从 CanLoadChildren() 方法返回 false 以测试 canLoad 但是尽管调用 canLoad 并返回 false canLoad 仍然加载模块并重定向到该模块。任何人都可以帮助? 谢谢
身份验证服务
验证保护文件
app.router.ts
angular - Angular 2 Guards:canLoad() 是否有任何原因触发两次?
canLoad 在拒绝或接受时触发两次
canLoad 实现
调用的服务方法
假设 Observale 布尔响应将被返回
angular - 使用 useHash 时,Angular RouterStateSnapshot 参数为空:true
我正在访问我的 Angular 4 应用程序的 URL 参数,RouterStateSnapshot
它工作得很好:
问题是,一旦我编辑我的RouterModule
配置并设置useHash: true
上面的代码由于某些原因停止工作,因为state.root.queryParams
它将始终为空。
为什么会这样?如何解决问题?
javascript - 如何解决 Angular4 路由器中的转换问题
我正在尝试链接路由器解析器
这是我的路由器选项。
我想调用SessionService(SessionResolve),然后使用 Session 数据的 lang 值调用LocaleService(LocaleResolve)
但是,上述代码调用同时解析
我认为在这里解决代码更改 但我不知道,因为我以前没有使用过 Angular4。
有没有办法可以使用 resolve 作为 chanining?还是我应该一次解决所有工作?
javascript - 守卫中不可用的路由参数
为什么id
在下面的守卫中不可用?
在组件内部实现时,相同的代码可以完美运行。
angular - 如何在 Angular2 应用程序的 CanDeactivate 中显示模态确认?
我有一个 Angular2 应用程序。它的一个组件实现了 CanDeactivate 接口,以确认用户离开页面的导航。下面是路由守卫的实现:
这是组件的代码:
现在,我想显示一个自定义模式窗口而不是浏览器的确认框。我用 Telerik 的 Kendo UI 构建了这样的窗口:
如果我在代码中的任何位置设置userConfirm = true ,则此模式窗口有效,除了 canDeactivate() 方法。
如何使用此模式窗口来获取用户的输入?
谢谢你。
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: