问题标签 [auth-guard]

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 投票
2 回答
7146 浏览

angular - 在Angular中->如何使用基于角色的访问权限检查用户是否具有权限,并将角色保存在数据库中

我正在尝试以 Angular 为我的应用程序进行基于角色的访问,我需要一些帮助,因为我是 Angular 的新手......

首先,这是我在确定哪些角色可以访问它的路线中所拥有的......

来自 app-routing.module.ts

其次,我使用 canActivate 函数检查用户是否可以访问路由。来自 auth.guard.ts

第三,我开发了函数 accessLoginToken,它将通过 httpclient.get 服务找到登录用户的角色,该服务返回一个数组,其中包含分配给用户的角色。{success: true, roles:['user']} 来自 auth.service.ts 的示例

中的第四个function checkAccess,我将它与路由的那些进行比较,如果它们匹配,我允许访问,否则不允许。来自 auth.guard.ts

主要问题是我无法让 httpclient 订阅将 hasAccess 变量的值更改为 true 以允许访问。即使this.hasAccess = true; 执行代码,函数也会返回 false

顺便说一句,我不喜欢将角色保存在像 access_token 这样的会话变量中的想法,所以我试图将它保存在数据库中......

任何有关该主题的帮助将不胜感激..谢谢

0 投票
1 回答
1016 浏览

angular - 刷新页面以角度 5 自动注销

我正在使用 firebase 进行登录和注册。那是我的 authService 的样子:

并在我的 authGuardService 中调用 canactivate 方法,如下所示:

但是当我刷新页面时,这个authenticated值总是假的。

请任何人都知道会感激的原因。

0 投票
0 回答
908 浏览

angular - 如何通过管道传输多个依赖的 Observable?

在 Angular 7 中,我通过@ngx-pwa/local-storage. 要获取和保存键值对,此 API 是异步的。然后我有另一个方法来检索 JWT 并进行HttpClient调用。我似乎无法链接并让这些异步方法工作。

我从 localstorage 获取 JWT 的方法如下。

我的其他方法如下所示。

当我试图打电话时,myService.isLoggedIn()什么也没有发生。如果我输入console.log消息,我可以跟踪getHttpHeaders()被调用但返回的 Observable 未被调用。

关于我做错了什么的任何想法?

0 投票
1 回答
386 浏览

angular - 与 keycloak 集成时,组件在 canActivate 返回角度 4 之前加载

我已经将 keycloak 与应用程序集成,我已经编写了 AuthGuard 来保护特定的路由。canActivate 工作正常,但是路由的组件也会加载,另一个 API 调用也会在后台触发。如何加载组件直到 canActivate 返回结果。

0 投票
1 回答
1362 浏览

angular - Angular 6 - NavigationCancel - 原因:“路线保护返回假” - 在保护完成之前

我有延迟加载和 onLoad Guard 的路线。在警卫中,我从后端获取导航菜单(您只会看到您经过身份验证的导航点)并将路线与来自后端的路线列表进行比较。

问题:当我单击路由的按钮时,会触发路由,但会立即取消(在控制台中跟踪),原因如下:

尽管调试角度显示 onLoad 方法甚至没有解决 - 它会返回 true!

appRouting.module.ts

AuthGuard 服务:

控制台输出:( 从单击按钮跟踪到路由“meldungsmanagement”)

如您所见,该路由被触发、关闭、重定向到“/”,许多行之后 authGuard 说他返回了 TRUE...

为什么路由器不等待警卫回答?“假”从何而来?我哪里做错了?

我会很感激任何帮助,谢谢!

PS:我已经阅读了问题Angular2: Router Event: NavigationCancel before Route Guard has resolve,但它与我的情况不匹配,因为用户仍然登录并且我不想在警卫内重定向。

0 投票
2 回答
970 浏览

angular - Angular7 AuthGuard Firebase 声明

我可以使用 firebase 登录,但是在我的应用程序中,我有 3 个级别的用户。我们称他们为管理员、用户、编辑。我保留用户在 Firebase 提供的自定义声明中的角色。

在 AuthGuard 中,我传递 data expectedRoles = ['admin', 'editor'],添加我希望允许特定路由的角色。我想做重定向到自己的页面,例如编辑器尝试管理路由将返回到编辑器仪表板。

这是我的 AuthGuard 的canActivate功能:

在添加之前user.getIdTokenResult().then(...)它工作正常,我知道这可能是由于没有等待异步调用来解析自定义声明。我该如何解决这个问题?

0 投票
1 回答
70 浏览

angular - 第一次注销后第二次登录不起作用

如果登录凭据正确,我已经编写了一个 API,它返回一个令牌和一个用户 ID。那些我保存到本地存储中,如下所示: 本地存储 如果用户令牌不再有效,我清除本地存储:

登录代码是这样的:

我第二次尝试登录本地存储并没有保存任何内容。我很感激任何想法:)

0 投票
0 回答
739 浏览

angular - 在 Angular AuthGuard 中使用 @ngrx/store 元素

我正在尝试在我的 authguardService 中使用来自 ngrx/store 的元素。当路由到达它检查 canActivate 的点时,它可以正常工作,但是当元素更改时,路由保护不会更改它的输出,并且 canActivate 函数仍然返回,即使它应该返回 false。

canActivate 函数的代码:

路由:

正如您在上面的代码中看到的那样,我定义了两次路线/offers,一次用于 Besucher 时,另一次用于 Lernender 不幸的是,即使在 store 中 account.role 更改为 LERNENDER 后,它仍然匹配route 因为 BesucherGuardService 似乎不知道 account.role 变量的变化。

我怎样才能解决这个问题?

0 投票
2 回答
2120 浏览

angular - 导航后如何删除 queryParams | 角

我正在使用 Angular 应用程序并尝试检查CanActivate是否token有效,如果有效则返回 true。如果为真,我需要从url 我已经尝试过此代码删除 url 参数中删除它

let url: string = this.router.url.substring(0, this.router.url.indexOf("?")); this.router.navigateByUrl(url);

但它进入了一个无限循环。使用检查其有效性后如何删除参数?

`

auth.service.ts

反向验证.guard.ts

应用程序路由.module.ts

0 投票
1 回答
483 浏览

angular - 路由到下一页时上一页图像清除延迟(Ionic 4)

背景:
我已经开始为一家虚构的律师事务所构建一个 Ionic 应用程序,用于一般实践。这是我的 github 仓库的链接:https ://www.github.com/jamesslater/boutiquesolicitors

它从登录页面开始,目前唯一接受的凭据是 -
用户名:用户
密码:123

登录后,该应用程序将被路由到“成员/仪表板”。我按照本教程进行角度路由流程:https ://devdactic.com/ionic-4-login-angular/

问题:
登录后,页面似乎过渡到加载下一个,好像内容在向左滑动。在加载仪表板时,ion-img 元素会在页面上停留片刻,然后消失。这看起来非常不稳定,并且 100% 的时间都会发生。我不知道它为什么这样做。

以下是浏览器中问题的一个片段,以便更好地理解:https ://streamable.com/kpgwx

任何帮助是极大的赞赏。谢谢!