问题标签 [canactivate]

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

angular - CanLoad 守卫不允许使用“/”路由

我的计划是建立一个项目,其中“/”上的主网站非常庞大,只是在实际登录后才延迟加载。

但是 CanLoad 似乎有这个限制,它不适用于“/”,因为发生的情况是应用程序陷入无限循环。当 canLoad 被拒绝时,CanLoad 具有内置的自动重定向到 '/',即使您在“false”时重定向到 '/login' 也是如此。

我的临时解决方案是不使用 '' root 作为路由,而是将其称为 '/home' 或其他名称,但这会在应用程序的每条路由前面添加 /home/。

CanActivate 守卫在这个设置下工作,但是当然我没有得到延迟加载的好处,因为无论如何都会加载完整的应用程序(home/),即使用户只会卡在 /login 屏幕上。

有关的:

https://github.com/angular/angular/issues/16197

https://github.com/angular/angular/issues/24715

0 投票
1 回答
711 浏览

javascript - Router Guards canActivate不能在角度使用API

此身份验证防护不适用于 API 响应。当我运行代码时,它总是返回 true。但我想根据 api 响应运行警卫。是他们实现这一目标的方法吗?

0 投票
1 回答
615 浏览

angular - 角度 2+ canDeactivate async:false

"async: false"已从 chrome 浏览器中删除。

因此,当页面关闭时,我无法再从我的站点中删除用户。无论如何,我已经尝试使用 observable 但它似乎没有调用我的 API 并且系统关闭。

你也不能使用:

因为这是一个Observable<boolean> | boolean.

0 投票
1 回答
661 浏览

javascript - 当我们返回带有 404 异常的 observable 时如何解决 canLoad 问题

我正在尝试在我的角度应用程序中的模块的 canLoad 事件中调用 API,

即使该 API 不可用并在网络中提供 404,我的页面仍在加载。如果有 404,我想避免这种情况,然后我想将我的页面重定向到某个错误页面。

在这里,如果 API 出现,那么我的代码按预期工作,但问题仅在出现 404 时出现。所以,我期待一个可以处理异常的块路由到 404 异常的错误页面。

0 投票
1 回答
1019 浏览

angular - Angular 5.1 应用程序中的一个组件不会触发 canActivate 防护

在我的 Angular 5.1.1 应用程序中,不会触发单个组件上的 canActivate 防护。当我路由到“用户”时,永远不会触发 AuthenticationGuard,但它适用于所有其他路径。

我认为这与“用户”用于重定向到路径为空时有关。所以我将 redirectTo 属性更改为客户端。第一次没有触发 AuthGuard,但下一次总是。对于“用户”,它仍然没有被触发。

路线

AuthGuard

没有为该组件触发 AuthGuard 怎么可能?

0 投票
2 回答
94 浏览

angular - Angular 4 GET 请求(可观察)

我正在尝试在 Angular 4 项目中获得一个可观察的\获取请求还可以,但是当我是管理员时,我被推到 403 未经授权的页面,我试图了解这个问题,我调试了代码,但我无法得到它,代码运行得很好,但无论如何我都会被推到 403 ......

0 投票
1 回答
254 浏览

rxjs - canActivate routeguard 使用 switchmap 操作符嵌套 observables 仅适用于浏览器

我正在使用带有身份验证和firestore的firebase。经过身份验证的用户在注册时存储在数据库中,其中一些用户具有“管理员”角色的额外角色字段。我想保护管理员路由,我使用 canActivate 路由保护。在 canActivate 函数中,我使用了 2 个 observables。第一个 1 获取登录用户并嵌套在另一个从 firestore 获取已保存用户的 observable 中,如果登录用户是否为管理员,则使用来自那里的信息。问题是当浏览器在浏览器中的路由类型之后刷新时路由保护工作正常,但是当使用按钮上的 routerlink 调用路由时,什么也没有发生。

尝试使用 sycnronous 值,但这些值只工作一次,并且在导航后停止工作。

canActivate 函数: https ://i.imgur.com/Rf0BZ79.png

使用的观测值: https ://i.imgur.com/hRp8zyf.png https://i.imgur.com/oV56AGl.png

// 用户对象或来自 firebase 的 null

//检查角色并返回true或false(userArr是一个可观察的用户数组,用于存储来自firestore的用户)

因此,这仅在我在浏览器中键入路径并且在加载路由时浏览器刷新时才有效。当我单击管理按钮导航到管理页面时它不起作用(不适用于 routerLink 或 router.navigate(..))

0 投票
0 回答
73 浏览

angular - Angular5 canActivate() 异步函数单元测试

任何人都可以帮我解决这个问题.. 单元测试新手.. 谢谢面对 Assync 数据的问题

对此无法解释太多。我已经研究并考虑了许多开玩笑的单元测试,但一直无法找到合适的选项来保持对此的完全理解。

0 投票
0 回答
88 浏览

angular7 - 如果 Angular 中的页面刷新进入递归,则防止路由到辅助视图

我正在开发“如果在 Angular 中刷新页面,则阻止路由到辅助视图”代码:https ://www.bennadel.com/blog/3368-prevent-routing-to-secondary-view-if-page-refresh-in- angular-5-0-0.htm

我已经开发了下面的代码,但是代码正在递归,并且相同的 Guard 继续在递归中执行。

注意:如果用户手动键入不存在的路由并在页面上刷新正确的路由,我想停止吗?

0 投票
1 回答
82 浏览

angular - 来自链接 url 或浏览器 url 的 Angular 8 Guards

有什么方法可以检测是否有人尝试单击已打开站点上的链接或尝试从 canActivate Guard 首次进入该站点?