问题标签 [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.
angular - 守卫总是返回真
我在 Angular 应用中有两个非常相似的守卫。首先检查的是用户登录:
这一项工作正常:当用户未登录时,不允许他打开受保护的页面。
下一个守卫几乎相同,但它检查用户是否未登录:
唯一的区别是:!auth ? this.router.navigate(['/'])
vs auth ? this.router.navigate(['/'])
。
但是isUser
守卫工作得很好,并且isGuest
总是允许用户页面。我做错了什么,为什么它不能工作?
angular - CanActivate 保护中的 ActivatedRoute 参数为空
我有许多应用程序的通用防护:
但是this.route.snapshot.params.site
路线为空:"/signin/macro/561"
。
路线声明:
angular - Angular 防护没有按预期工作
我正在尝试将新用户(不涉及身份验证)重定向到第一次使用该应用程序的国家/地区选择。我正在使用角度防护,并且我正在延迟加载。我正在检查以下链接:https ://angularfirebase.com/lessons/ionic4-intro-slides-tutorial-to-educate-app-users/ 。然而问题是,因为我是延迟加载,所以我尝试如下实现它。
app.module.ts
主页,它是主页和收藏页面的父页面
教程.guard.ts
编译后,屏幕变白,我在tutorial.guard.ts中提到的 console.log 部分永远运行。
你能告诉我我做错了什么吗?
angular - Ngrx 两个守卫在注销时第二个不触发路由
我有这些路线:
在登录时,两者都被触发,但是当在管理区域中我注销删除身份验证和帐户状态时,如果我再次登录而不刷新仅触发第一个,则重定向到身份验证路由。我试过使用
但我仍然有同样的行为。
有任何想法吗?
注意 ,我也尝试在 AccountGuard 中放置一个简单的 console.log,例如
但在第二次登录时,我在开发工具中看不到任何消息
angular - Angular Guards 生命周期说明
我试图找到有关生命周期应用程序初始化的任何信息。守卫的种类很少。我对以下类型感兴趣:
- 可以激活
- 可以加载
- 可以激活孩子
假设我们有以下路由配置:
和主路由:
现在,当试图打开parent/childA
. 哪个守卫会先被处决?会ParentA Component
在 CanActivateChildGuard 检查之前呈现吗?
angular - 从组件和保护调用时,Angular BehaviourSubject 订阅未更新
如果我的问题看起来很愚蠢,我很抱歉。
我尝试在我的服务中实现 behaviorsubject,然后从我的登录组件中调用它。
这是我的服务
这是我组件中的代码
这是守卫
当我尝试登录 console.log 时,守卫返回 null。
任何人都可以向我解释,为什么会这样?
更新
应用程序没有问题,您必须做的是:
仅使用一次提供商
将服务导入 app.module.ts 中的 @ngmodule,否则您将为每个组件/模块创建实例。
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 不支持任何直接功能来查看用户是否已登录。请问这里有什么建议吗?
angular - Angular 7.3如何从路由中获取数据
我想将 app.routing.ts 文件中的当前 URL 传递给守卫,因为由于某种原因导致 url 在守卫中被重置存在问题。下面我添加了如何将数据传递给路由。
现在我的问题是:如何使用 Angular 7.3 在我的守卫中获取此 URL 数据?我尝试了多种解决方案,例如下面的ActiveRoute解决方案
或者
但可悲的是,两者似乎都不适合我
编辑:我正在尝试在我的自定义警卫的canActivate 函数中获取这些数据
编辑 2.0:我尝试了下面的解决方案,但在应用程序重定向到根路由之前,.then() 中的日志甚至没有被触发
angular - 按下浏览器后退按钮后,CanDeactivate 防护未按预期运行
我已经实现了 canDeactive 保护,一旦点击浏览器按钮,它就会弹出一个模型并询问是/否。单击否后,它会停留在同一页面上,如果我再次按下后退按钮,则会出现弹出窗口,单击否/是按钮后,它会重定向到浏览器历史记录中的空白页面 url,而不是停留在相同的 url 上。
请找到停用守卫的代码。