问题标签 [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 - 返回一个 Observable来自 canActivate 方法并重定向为 false
我一直在寻找没有运气的解决方案。如果用户被授权,我需要调用服务器,并且我需要 canActivate 方法来等待该调用的结果。但我似乎无法拼凑起来。下面是我的代码,我的问题在代码的注释中。
身份验证服务
angular - 在 Angular 5 上等待 Guard 内部的 http
我在 Angular 应用程序上使用 Guard 来解析初始关键数据。在 Angular 的第 4 版上,我是这样处理的:
由于Angular 5 上的新版本 Http不再使用该.map()
属性,因此这不起作用。
如果我更改.map()
它.subscribe()
不会引发任何错误,但应用程序永远不会正确解决。另一方面,使用.first()
和/或.map()
抛出一些错误,正如在这个版本中所预期的那样。
在这种情况下我该怎么办?
仅当加载初始数据时,我才需要激活该路由。
编辑以添加有关该apiGet
功能的信息:
angular - 刷新 Angular 应用程序时,它会忽略当前 URL 并返回到根 URl
如果我的 Angular 应用程序,如果我导航(通过明确输入 URL 或单击页面链接)到http://localhost:4200/#/sign-in
页面加载正常并显示我的登录表单。如果我随后Refresh在浏览器中单击,我将返回到根页面http://localhost:4200/#/
。
我的路由器很简单:
我在用
- 视窗 8
- 铬 62
@angular/core": "^4.2.4
@angular/router": "^4.2.4
任何想法为什么会发生这种情况?
angular - Angular Route Resolve Guards - 需要帮助
问题描述
在我的应用程序中,我使用的是 JWT 身份验证。在令牌的有效负载中,我存储了用户 ID。登录后,或者当用户刷新页面并且仍然有一个有效的令牌时,我使用令牌中的 id 从我的后端检索有关用户的一些信息。我需要在依赖它们的应用程序的多个组件之间共享这些信息。
当前解决方案
我有一项服务可以检索这些信息并将其存储在一个对象中。依赖这些信息才能正常工作的组件会在其中注入此服务(服务是单例),并在其布局顶部有一个 *ngIf 以避免在信息不存在时显示任何内容。
可能的替代解决方案(Route Resolves)
我最近发现了路由解析守卫。这些对我有用吗?我可以实现一个警卫,要求在显示页面之前加载信息,并将其添加到所有需要它们的路由中。
- 那些警卫像服务一样工作吗?
- 这些可以注入组件中吗?他们是单身人士吗?
- 如果我将包含用户信息的对象返回给路由(我会在第一次加载后将对象存储在路由保护中,以避免不必要的 api 调用),这将是保护内部存在的同一个对象还是副本?(如果我需要修改它)(如本教程中所述http://www.callibrity.com/blog/angular-2-route-resolves)
谢谢
node.js - 角度路线守卫有多安全?
我正在创建一个在线商店,并且有一个管理部分,您可以在其中跟踪订单并修改它们。
它受到身份验证的保护,这是在节点服务器上完成的,密码被散列到数据库等中,但我担心路由保护仍然被绕过。
angular - 关闭 Angular 5 路由
我们正在开发一个 SPA。在某些情况下,它的一部分被渲染到另一个应用程序中(作为标记的一部分)。在这种情况下,我们不希望在我们的应用程序中使用路由,因为我们可能会从其他应用程序“窃取”它。是否有可能在 Angular 中“关闭”路由?还是忽略未知路线?
我试过了
- router.resetConfig 配置为空>“无法匹配任何路由”-出现错误。
- 在单独的通配符路由上使用 CanActivate 防护,它总是返回 false -> 相同的问题
- 在单独的通配符路由上使用 CanLoad-Guard -> 当不使用 #-routing 时,这似乎有效。但是我们正在使用#-routing,并且由于 AOT,我还没有找到在运行时切换 useHash-Value 的方法。
正在工作的是,完全删除 RouteModule.forRoot(...)-Import - 但当然在这种情况下,应用程序的其余部分完全被破坏了。
这是 CanLoad-Guard 的一次尝试:
angular - 如果未保存更改,Angular 2/4 会阻止用户离开组件
我有这个界面用来防止用户离开页面
在我的一个组件中,我有以下代码
我的问题是我的组件 - >(组件:ComponentCanDeactivate)来自 PendingChangesGuard 始终为空,所以我收到一条错误消息
无法调用 null 的 canDeactivate()
我的路由中也有这个设置
有人可以告诉我我在做什么错吗?
angular - 访问 canActivate Guard 中的 ActivatedRoute 组件
据我所知,调用签名canActivate
如下所示:
我有一个服务,它需要一个组件的名称并返回访问该组件所需的用户角色,以便我可以检查canActivate
我的警卫的功能,活动用户是否具有相应的角色。我的问题是,我不知道如何访问该组件。经过一番谷歌搜索后,我找到了这样的解决方案:
但就我而言,我只是收到一个错误:“无法读取未定义的属性'名称'”。如何访问活动 Route 的组件,尤其是名称作为字符串?
编辑
我发现,我确实在父路线上检查了这个守卫。当我在子路线中检查它时,它可以工作。如何从父组件访问子组件ActivatedRouteSnapshot
angular - Auth guard not working in angular 5
Here is my static login service
My authguard service
my app.routing.ts
app.module.ts
I just tested this by entering a route directly in browser url for example /home which has canactivate enabled in its route config but when i do so the home contents are displayed instead of redirecting to the login page.Need too know what's wrong here any help will be really appreciated thanks in advance :)