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

angular - Angular 6嵌套子路由不渲染视图

我被困在导航工作的地方,但视图无法正常工作,基本上一个组件映射到两条不同的路线:

组件example.component.ts

路线

http://localhost:4200/manager/nav/example

http://localhost:4200/nav/valuation

有两个不同的模块并定义了自己的路由

导航机制:当用户点击管理器时,它会加载自己的组件,然后用户可以导航到管理器>导航,从导航用户可以导航到管理器>导航>示例

manager.routing.ts

] }

http://localhost:4200/manager/nav 在此处输入图像描述

http://localhost:4200/manager/nav/example 问题视图不变

路线已更改,但视图基本不会呈现在管理器视图而不是示例视图上

但是当我使用路由导航而不是点击示例时,它会加载原始页面并且导航有自己的模块和路由

导航路由.ts

显示正确的视图

在此处输入图像描述

在此处输入图像描述

当我使用路由http://localhost:4200/manager/nav/example直到http://localhost:4200/manager/nav时,视图会发生变化,当我导航到 http://localhost:4200/manager/nav/例如,相同的视图仍然存在,它没有加载视图但路由更改

您可以看到前两个图像来查看路由,最后两个图像是右视图

0 投票
2 回答
431 浏览

angular - 基于 Angular 6 中的守卫路由到其他页面,rxjx 6 异步请求

我已经实现了能够获取请求并控制页面授权的功能,如果出现错误请求,我想重定向到登录页面。

如何从这里路由到登录页面?我正在使用角度 6

0 投票
1 回答
312 浏览

angular - CanDeactivate 只触发一次,并不总是

单击浏览器后退按钮时,我CanDeactivateGuard并不总是触发。我找不到原因。你能看看我的代码,给我建议吗?

警卫:

SignupComponent 中的方法:

路由:

0 投票
2 回答
300 浏览

angular - Angular Guard 和 JWT

我正在尝试做下一个......我有一个 API,我通过 POST 发送一个 JWT 令牌以验证它是否有效/过期,

所以在我的角度登录服务中,我有一个这样的方法。

这个订阅返回一个布尔值,这里一切正常。

现在我正在我的应用程序中实现 Guards,所以现在我想为我的 canActivate 方法使用该布尔值来阻止访问...我读到我需要在此方法中返回 true 或 false 以允许或阻止访问我之前配置的路线

所以我在canActivate里面做这样的事情。

但这是返回无效......为什么?如何从此订阅中检索真值或假值?

0 投票
0 回答
1083 浏览

angular - angular 2 candeactivate 不使用子组件

我在子组件中有表单,我将子组件放在父组件表单下。我已经实现了不适用于子组件的 canDeactivate。

以下 stackblitz 示例。 用于取消激活的 Stackblitz 示例

谁能帮助我,我做错了什么

0 投票
2 回答
296 浏览

javascript - 点击后关闭侧边菜单

我正在构建一个 Angular 应用程序,但在关闭 popstate 菜单时遇到了一些麻烦。当侧边菜单打开并且用户单击其移动设备上的后退按钮时,我希望菜单关闭菜单,因为我使用类似的弹出状态

我遇到的问题是后退操作也有效,因此菜单已关闭,但后退操作也会发生。我不能使用history.go(1),因为它使页面再次加载,我不想要这种行为。

你有什么想法吗?

0 投票
2 回答
2345 浏览

angular - 具有多个条件和重定向的 Angular 防护

我想创建一个复杂的路由器保护来检查用户是否在 Web 应用程序中进行了身份验证,但如果是这样,它还会检查其他条件,并且对于每个真实条件,它都会重定向到一个页面(但是在同一个路由器保护下)。为了更好地在路由器保护内部解释这一点,我必须做这样的事情:

问题实际上是这不起作用,因为每个重定向都会带到受此保护保护的页面,然后每个重定向都会调用另一个重定向,并以无限循环结束。如果 state.url 与我们重定向到条件主体内部的不同,我已经尝试检查条件内部,但这不起作用。有没有一个简单的解决方案来做到这一点?

0 投票
1 回答
1142 浏览

angular - 当守卫返回 Observable 时,Angular 路由器不起作用

我想重定向未登录的用户,当他们尝试访问受保护的路由但重定向不起作用,因为检查用户是否登录的函数返回一个 Observable。

这是我在 PrivateGuard 中的代码:

app.routes.ts:

如果我登录时在 else 语句中写 console.log,这个 console.log 会出现在控制台中,但永远不会重定向到 homeComponent

当我尝试导航到私人路线时的控制台

url 中的路由消失,而不是 localhost:4200/login

感谢您的任何回复。

解决了

最后我使用 promise 而不是 observable。代码如下:

谢谢大家的答案

0 投票
1 回答
2316 浏览

angular - Angular 6 如何实现 canActivateChild

我是 Angular 身份验证守卫的新手。我已经成功集成了 auth guard 以便登录的用户可以访问私有页面。为此,我使用了CanActivate. 现在,我的意图是使用另一种类型的保护来防止登录的用户访问一些私人页面。从https://www.concretepage.com/angular-2/angular-2-4-route-guards-canactivate-and-canactivatechild-example,我知道我可以用它canActivateChild来实现类似的结果。

app-routing.module.ts文件中,我使用了以下内容:

myaccount组件下,我还有其他几个子组件。

myaccount-routing.module.ts中,我写道:

在下的abc组件中,myaccount我在以下内容中编写了以下内容abc-routing.module.ts

这是我的auth.guard.ts

当我从浏览器进入 xyz 页面时myaccount/abc/xyz,它应该触发浏览器控制台,但是,我在浏览器控制台中看不到任何文本。CLI 中也没有错误。但是我刷新了xyz页面,没有运气。浏览器控制台中没有文本。任何想法?

0 投票
0 回答
930 浏览

angular - Angular 7 Route Guards 仍然更改 URL

我的应用程序无法在 url 地址屏幕中显示更改。现在,我的应用程序位于 localhost:4200/,仅此而已。所以我花时间确保我的导航链接禁用位置更改:

我在一项服务中有一个集中位置,当需要更改屏幕时处理路由:

在我的主应用程序路由模块中,我跳过了初始导航:

在我的导航发生的子路线中,我有警卫根据某些条件防止某些导航发生:

我的 WorkFlowGuard 返回一个简单的布尔值来确定路径是否被允许:

当我能够访问一个屏幕时,或者当我通过表单按钮移动到下一个屏幕时,指向的 url 不会改变,这太棒了!但是,只要 WorkFlowGuard 被激活并返回 false 以阻止我访问某个屏幕,顶部的 url 就会更改。换句话说,如果我在“某个路径”上,并且在无法访问“另一个路径”时尝试访问,则顶部的 url 将从

本地主机:4200/

本地主机:4200/somepath

为什么会发生这种情况,我能做些什么来防止 URL 更改发生?