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

angular - 守卫总是返回真

我在 Angular 应用中有两个非常相似的守卫。首先检查的是用户登录:

这一项工作正常:当用户未登录时,不允许他打开受保护的页面。

下一个守卫几乎相同,但它检查用户是否未登录

唯一的区别是:!auth ? this.router.navigate(['/'])vs auth ? this.router.navigate(['/'])

但是isUser守卫工作得很好,并且isGuest总是允许用户页面。我做错了什么,为什么它不能工作?

0 投票
1 回答
715 浏览

angular - CanActivate 保护中的 ActivatedRoute 参数为空

我有许多应用程序的通用防护:

但是this.route.snapshot.params.site路线为空:"/signin/macro/561"

路线声明:

0 投票
2 回答
336 浏览

angular - Angular 防护没有按预期工作

我正在尝试将新用户(不涉及身份验证)重定向到第一次使用该应用程序的国家/地区选择。我正在使用角度防护,并且我正在延迟加载。我正在检查以下链接:https ://angularfirebase.com/lessons/ionic4-intro-slides-tutorial-to-educate-app-users/ 。然而问题是,因为我是延迟加载,所以我尝试如下实现它。

app.module.ts

主页,它是主页和收藏页面的父页面

教程.guard.ts

编译后,屏幕变白,我在tutorial.guard.ts中提到的 console.log 部分永远运行。

你能告诉我我做错了什么吗?

0 投票
1 回答
470 浏览

angular - Angular Firebase Guards,阻止具有特定角色的路由

嗨 Angular 开发人员,

请我需要您的帮助,我需要阻止具有特定角色的路由,这是我的带有配置文件的文档:

在此处输入图像描述

我的角度守卫返回并反对配置文件:{admin:true,current:false}

问题是如何在 Angular 路由中实现角色保护,例如:

0 投票
1 回答
129 浏览

angular - Ngrx 两个守卫在注销时第二个不触发路由

我有这些路线:

在登录时,两者都被触发,但是当在管理区域中我注销删除身份验证和帐户状态时,如果我再次登录而不刷新仅触发第一个,则重定向到身份验证路由。我试过使用

但我仍然有同样的行为。

有任何想法吗?

注意 ,我也尝试在 AccountGuard 中放置一个简单的 console.log,例如

但在第二次登录时,我在开发工具中看不到任何消息

0 投票
1 回答
971 浏览

angular - Angular Guards 生命周期说明

我试图找到有关生命周期应用程序初始化的任何信息。守卫的种类很少。我对以下类型感兴趣:

  • 可以激活
  • 可以加载
  • 可以激活孩子

假设我们有以下路由配置:

和主路由:

现在,当试图打开parent/childA. 哪个守卫会先被处决?会ParentA Component在 CanActivateChildGuard 检查之前呈现吗?

0 投票
2 回答
42 浏览

angular - 从组件和保护调用时,Angular BehaviourSubject 订阅未更新

如果我的问题看起来很愚蠢,我很抱歉。

我尝试在我的服务中实现 behaviorsubject,然后从我的登录组件中调用它。

这是我的服务

这是我组件中的代码

这是守卫

当我尝试登录 console.log 时,守卫返回 null。

任何人都可以向我解释,为什么会这样?

更新

应用程序没有问题,您必须做的是:

仅使用一次提供商

将服务导入 app.module.ts 中的 @ngmodule,否则您将为每个组件/模块创建实例。

0 投票
1 回答
1534 浏览

angular - 如何检查:用户是否使用 angular-6-social-login npm 包登录?

我已成功与 angular-6-social-login ( https://www.npmjs.com/package/angular-6-social-login ) 集成以使用 google 帐户登录我的 angular APP。

我正在创建一个 Angular Guard 来保护路由,以便只有用户在登录后才能访问。来自 angular-6-social-login 的 AuthService 不支持任何直接功能来查看用户是否已登录。请问这里有什么建议吗?

0 投票
1 回答
83 浏览

angular - Angular 7.3如何从路由中获取数据

我想将 app.routing.ts 文件中的当前 URL 传递给守卫,因为由于某种原因导致 url 在守卫中被重置存在问题。下面我添加了如何将数据传递给路由。

现在我的问题是:如何使用 Angular 7.3 在我的守卫中获取此 URL 数据?我尝试了多种解决方案,例如下面的ActiveRoute解决方案

或者

但可悲的是,两者似乎都不适合我

编辑:我正在尝试在我的自定义警卫的canActivate 函数中获取这些数据

编辑 2.0:我尝试了下面的解决方案,但在应用程序重定向到根路由之前,.then() 中的日志甚至没有被触发

0 投票
1 回答
502 浏览

angular - 按下浏览器后退按钮后,CanDeactivate 防护未按预期运行

我已经实现了 canDeactive 保护,一旦点击浏览器按钮,它就会弹出一个模型并询问是/否。单击否后,它会停留在同一页面上,如果我再次按下后退按钮,则会出现弹出窗口,单击否/是按钮后,它会重定向到浏览器历史记录中的空白页面 url,而不是停留在相同的 url 上。

请找到停用守卫的代码。