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

angular - 角度路由中基于条件的 Auth Guard。(路线保护不仅仅是导航)

我正在创建一个 angular2 应用程序。

当我使用 LoginComponent 登录我的应用程序时,它将转到具有四个子组件的 DashboardComponent

  1. -一个
  2. -B
  3. -C
  4. -D

现在,我默认将 redirectTo 设置为我的仪表板组件。但代替此重定向,我想根据登录类型(例如他是管理员、超级管理员、学生或教师)重定向到路由 A、B、C、D。

认为

如果登录用户是“管理员”,他应该重定向到->仪表板/A

如果登录用户是“老师”,那么他应该重定向到 - >dashboard/B

我已经像这样创建了 authGuard

PS:我的主要目标是保护路线,如果有人知道受保护路线的 URL,即使他无法去那里。或者我们可以说我想要一个服务中的多个 authGuard 之类的东西。

更新

现在我已经为路由创建了不同的类,但是我收到了这个错误,不知道为什么?错误是

0 投票
1 回答
2386 浏览

angular - Auth Guard 应用于 angular2 中的延迟加载模块,但它仍然在重定向,尽管被拒绝 canLoad 不起作用

假设 Return false 将在 http 调用上的身份验证中返回,但现在我从 CanLoadChildren() 方法返回 false 以测试 canLoad 但是尽管调用 canLoad 并返回 false canLoad 仍然加载模块并重定向到该模块。任何人都可以帮助? 谢谢

身份验证服务

验证保护文件

app.router.ts

0 投票
1 回答
352 浏览

angular - Authguard 需要基于两个订阅链

我正在尝试在角度 4 中使用 authgaurd 来根据尝试访问它的人的用户 ID 来限制对网站的访问。这是在 Intranet 上运行的,所有用户都将是经过 Microsoft Active Directory 身份验证的域用户。

我的应用程序正在使用 apache tomcat 的 linux 机器上运行。为了使 authguard 起作用,canActivate 方法需要首先调用 IIS Web 服务来检索当前用户的 ID。此 ID 将根据应用程序来验证用户的帐户并确定他们在系统中的角色。

我已经能够让一个订阅调用下一个订阅并且可以检索数据,但我不知道如何以这种方式实现这一点,必须将最终的布尔值传递回 canActivate 方法。下面的 canActivate 代码只是进行 Http 调用并继续前进。让它等待结果的正确方法是什么。

0 投票
0 回答
145 浏览

javascript - 在Angular 2 App的同一会话中重新登录时加载最后一个活动组件

现在在我的 Angular 2 应用程序中,我正在成功处理登录和注销。我还在使用ActivatedRoutequeryParams在用户注销然后重新登录时重新加载所有最后加载的组件,所有这些都在同一个会话中。登录组件如下所示:

我想处理的唯一调整是,如果加载了三个选项卡/组件,当用户注销然后重新登录时,我想将最后一个活动选项卡加载为新的活动选项卡。

现在,我们在我们的应用程序路由文件中使用 AuthGuard 和重定向来在登录成功后的所有情况下重定向到仪表板组件。因此,这可以处理用户输入未知路由以及用户首次登录或在同一会话中再次登录的两种情况。应用程序路由文件如下所示:

这是我的 authenticationService 中的相关代码:

我的 AuthGuard 文件如下所示:

但我想做的是加载最后一个活动选项卡/组件,而不是每次都简单地加载仪表板组件。我将如何处理这种期望的行为?Angular 中的路由是否允许我在这里设置一个条件子句,而不是总是默认加载一个默认组件?

我还想到,我可能会这样做的一种方法是在注销之前记下完整的 url 路径,通过window.location.pathname. 然后我需要将该值传回login()函数中。仍在尝试弄清楚如何做到这一点,同时还通过以下方式获取所有打开的选项卡/组件: this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';

0 投票
0 回答
375 浏览

angular - Angular 4 和 Firebase 身份验证防护

我目前正在实现 angular4 示例应用程序。我在使用 auth guard 时遇到了一些问题。我想根据用户的角色阻止路由。 Firebase - 用户文档

auth.guard.ts

auth.service.ts

我总是“拒绝访问”。问题是:守卫永远不允许访问管理路径。

0 投票
1 回答
2102 浏览

javascript - 如何在加载组件 Angular 4 之前获得服务响应?

我有一个向 api 发出请求的服务,根据它的响应,我应该决定是否必须加载一个组件。但是由于接收响应花费了时间,组件加载而不考虑响应状态,并且在收到响应一段时间(大约 0.5 秒)后,如果必须不加载组件,我们导航到其他地方。我不希望在收到响应之前加载组件。

我在角度 4 中使用来自AuthGuard的canActivate函数,如下所示:

我正在使用setTimeout以便获得正确的this.router.url

更新:

我添加了解析器,如下所示:

但组件仍然在响应数据接收之前加载......

0 投票
3 回答
5978 浏览

angular - 无法解析 AuthGuard 的所有参数:在我的 AuthGuard 服务中

我有一个 AuthGuard.service.ts 的代码,如下所示。

在 userLoginService.ts 中,我的代码如下

我在我的路线中注入这个 AuthGuard.service.ts 如下。而且我还在 NgModule 的提供者中提供了这个服务名称。

现在执行此代码时,我收到如下错误。

请让我知道我在哪里犯了错误。

0 投票
3 回答
760 浏览

angular - angular 4 auth 是服务器端还是客户端?如果它是客户端的,它可以被黑客入侵吗?

我目前正在一个项目中处理 Angular 4。我熟悉角度身份验证守卫。我的问题是,由于 angular 4 是客户端框架,我们不能通过检查浏览器窗口来破解 auth-guard 以访问页面,因为 typescript 被转译为 javascript 或者是 auth-guard 服务器有任何机会。

0 投票
1 回答
1359 浏览

angular - Angular 5 身份验证

我正在尝试使用 Angular 和 .Net 核心来了解身份验证过程,它向我发送了一个 jwt Bearer 令牌(Works)。所以我的问题是我不知道我应该在警卫和身份验证服务中做什么来正确管理用户(稍后使用角色)。但是我尝试了一些东西,现在我不知道我应该在我的 AuthService 中做什么。

编辑 登录帖子完成后,我将从服务器获得令牌和到期日期。所以我想存储这些,然后再声明,但我知道如何。以及我应该返回什么。

这就是我的 AuthService 的样子:

现在我不知道如何检查令牌是否存在以及如何返回布尔值(如果它是 Observable)。登录完成后检查未来调查也很重要?

m AuthGuard 看起来像这样:

0 投票
3 回答
3613 浏览

angular - How can I return true/false based on api response message in my angular authguard method?

I've put an angular routing authguard to put my page. I've an api that checks if the token is valid and based on that I want to return true or false for further navigation.

But seems that in 'subscribe' I assign my 'result' flag true not persisting outside of the subscribe. Is 'result' variable in wrong scope here? How can I correct that? Please help me understand my mistake in below code.

The above code prints out on console in below order, which seems to be weird to me. Anyone can explain please?

ENDfalse

Token Valid

true