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

angular - 检查用户在 Angular Guard 中是否为空

我有一个 Angular 管道,它在导航到特定路线之前检查用户是否是高级会员。

高级后卫:

但是由于没有登录用户,我总是在控制台中遇到很多错误user is null。我如何检查用户之前是否登录过?

以下不起作用:

你有别的想法吗?提前致谢!

0 投票
1 回答
609 浏览

angular - 即使用户已经登录,身份验证保护也会阻止访问

当用户第一次使用他们的凭据登录时,auth guard 允许用户访问管理页面,但是一旦我刷新或转到另一个管理页面,auth guard 会将我重定向回客户端页面,说明我没有访问权限.

auth.guard.ts

我的身份验证守卫所做的是检查令牌是否存在于本地存储中。如果存在,则通过检索令牌、对其进行解码并将其添加到 get 方法来检查用户是否存在于数据库中。isAuthenticated 函数在第一次尝试时有效,但在随后的尝试中,它甚至根本没有运行,我真的很困惑为什么它没有运行。

身份验证服务.ts

0 投票
1 回答
421 浏览

observable - Angular 9 - Guard:canActivate 等到满足特定条件

我有以下代码

第一次res是未定义的,所以 canActivate 解析自己返回 false。我需要的是保持它监听直到res被评估,然后返回 true 以继续路由。我该怎么做?谢谢。

0 投票
1 回答
641 浏览

angular - 如何在 Angular 角色守卫中等待服务器授权?

在我的应用程序中,用户登录并接收到存储在本地存储中的 JWT。用户通过身份验证后,将对服务器进行以下调用,以确定用户的角色和功能(他们可以访问哪些页面)。

我的问题是,当用户想要打开一个页面(恢复旧会话、复制选项卡、将 URL 传递给其他人等)时,该应用程序没有授权详细信息并且必须首先请求它们,角色保护就会启动。这导致用户被重定向到登录页面。

预期的功能在路线中定义,例如:

里面的hasFunction身体是GlobalConfigService这样的:

中完成的授权AuthService如下:

authorize()从中ngOnInit()调用AppComponent

我相信解决方案是在用户通过身份验证时设置一些等待条件,然后在评估其他任何内容之前允许完成授权。这只需要发生RoleGuard,还是会跨越整个身份验证/授权过程?

0 投票
0 回答
57 浏览

angular - 如何在不更改页面的情况下触发路由器守卫

我正在使用 Angular 9(常春藤)。我想在不实际更改页面的情况下触发路由器守卫。以 Angular 目前的能力,我该如何做到这一点?

以下是不起作用的示例代码,应该让您了解我正在尝试做什么。

在模板中:

在组件中:

我也试过this._router.navigateByUrl(this._router.url + '?'),但这也不会解雇警卫。

如何在不更改页面的情况下触发路由器守卫?

0 投票
2 回答
944 浏览

angular - 用于检查路线是否有状态的角度守卫

我有一个像这样导航的组件

一旦在那里我抓住了contructor中的数据

我想设置一个警卫来检查这些数据的存在,否则导航到其他地方

但这不起作用。你能帮我解决这个问题吗?

0 投票
2 回答
180 浏览

angular - 角度路由中的 CanActivate 保护,无需重复“CanActivate”属性

我想在路由中使用 canActivate 保护而不重复

canActivate: [AuthGuard],

如下代码

0 投票
2 回答
593 浏览

angular - 如何通过角度角色仅显示当前用户的组件

大家好,我有一个仪表板,其中包含所有组件的菜单:我希望当我以管理员角色登录时,我想显示所有组件,如果我以负责任的角色登录,我只想显示命令组件

我不知道该怎么做

这是我的 menu.ts import { MenuItem } from "./menu.model";

这是我的身份验证服务:

我的后卫:

路由组件:

这就是我的仪表板的样子: 图像

0 投票
1 回答
379 浏览

angular - angular2:为相同的路由和组件调用canDeactivate,但参数不同

在我的应用程序中,有多个链接具有相同的路由但具有不同的查询参数和片段。

例如,我有如下链接:

当我在上述路线之一并通过不同的参数导航到同一路线时,路线没有改变,但通过改变 RouteReuseStrategy 这个问题得到了解决。现在我想调用 canDeactivate 来更改路线,当我导航到其他路线时调用了 canDeactivate 但是当我通过不同的 queryParams 和片段导航到同一路线时,不会调用 canDeactivate !

0 投票
2 回答
3997 浏览

angular - 如何使用 Spring Boot 项目在 Angular 中管理登录会话?

我正在使用 Spring Boot 开发一个 Angular 应用程序。我开发了一个以用户名密码作为输入的登录页面。从后端对用户进行身份验证并发送成功和失败响应的 Web 服务。以及成功认证后显示的主页。

发生的事情是我也可以直接打开主页 URL 而无需登录,这不是正确的。

我需要的是实现一种机制来检查用户是否登录,并在此基础上显示 URL 页面或登录页面。