问题标签 [canactivate]

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 回答
383 浏览

angular - Angular canActive 与 observable

我在警卫中使用 canActivate 方法。在里面我有一个可观察的,它给了我一个对象。这个对象有一个密码。我检查密码,如果正确,我希望 canActivate 返回 true,如果不是,则返回 false。

这是代码

我无法理解回复。无论何时完成,我都必须做出回应。从订阅中获取值后,我想在 canActivate 中返回布尔值。

我得到的错误是关于 canActivate 方法(红色)

我以为我会在 if 的每个分支中返回,所以应该足够了,但显然不是。如果我退还订阅,他也会抱怨。

有什么帮助吗?非常感谢。

0 投票
3 回答
602 浏览

php - 登录 Angular 6 和 PHP Web 应用程序时是否需要使用 JWT 令牌

关于 Angular 6 的登录步骤:

如果我这样做如下:

  1. 将用户名和密码发送给 PHP;
  2. 服务器代码检查用户是否存在;
  3. 如果确实存在,我们将再次向 Angular 发送一个 json 数组,其中包含usernameuser role
  4. 将它们保存在本地存储中
  5. 当用户尝试浏览应用程序时,我们将使用canActivate警卫服务检查这些凭据。

我们是否也需要使用 JWT 来设置令牌还是没有必要?

0 投票
1 回答
52 浏览

angular - 当返回结果为 true 时,CanActivate 不显示所需的组件

我有以下 API 函数:

此功能将检查 JWT 是否存在,然后如果登录的用户是管理员,则让他浏览不同的组件。

下面,是 canActivate 方法。我为它创建了一个新服务,并将它包含在 app.module.ts 中:

当登录的用户是管理员时,PHP 返回 true,如果不是这种情况,则返回 false,但forgot如果它是 true,则它们没有重定向到调用的组件。甚至在组件为假时也没有重定向login

这是我的路线:

0 投票
2 回答
286 浏览

angular - 输入 url 时 canActivate 不起作用

基本上一切正常,直到由于某种原因输入 url 时,方法 canActivate 中的变量 this.estado 恰好未定义。

我认为这是因为构造函数没有在正确的时间获得 observable。

感谢@sirdieter 解决了

我把解决方案留给将来遇到麻烦的人:

0 投票
0 回答
62 浏览

angular - 检查登录方法的承诺不会将承诺返回给 canActivate()

我有以下登录方法:

当用户成功登录时,一个 JWT 数组会返回到本地存储中,因此我们可以检查角色,以及它是否仍然登录。

有一个组件只有管理员才有权访问它,所以当用户点击路由时:

authGuard 将使用canActivate()守卫运行。

现在检查checkIsLogin(),执行以下脚本以返回一个承诺:

whereloggedIn在类的顶部被定义为布尔值。

这是功能checkIsLogin()

当用户登录时,会返回一个 jwt,其中包含所有必要的详细信息。但是,如果是管理员,并且在单击所需的路线时,什么都没有发生,也没有执行任何代码,控制台也没有错误。

0 投票
2 回答
3332 浏览

angular - Angular - 在 canActivate 之前解析 Observable 数据


我正在使用 Angular 开发一个 Web 应用程序,但遇到了一个问题。有一个登录用户的身份验证服务。我正在使用凭据向服务器发送请求并等待响应。问题是我尝试从登录组件导航到主组件在响应的订阅中


但是每个其他组件都有一个 canActivateGuard 来检查当前用户是否已登录(我正在等待来自服务器的数据)。


在 canActivate 检查完成之前有没有办法解决?还有其他解决方案吗?
欢迎任何其他有关如何保护组件的建议:D

0 投票
1 回答
125 浏览

angular - Route Guard:如何根据 HttpPost 设置的参数设置 true 或 false?

我的代码:

评论是我喜欢做的,但我真的不知道我应该写什么,因为这是我第一次使用 angular 4。

基本上,如果已发送来自授权的某些参数,我想设置 True,如果服务中没有参数,则设置为 false。

我希望这很清楚,如果您需要更多信息,请告诉我:)

服务:

0 投票
1 回答
3309 浏览

angular - 带有 CanActivate 保护的延迟加载模块,用于检查登录用户的角色

我有一个带有 canActivate 保护的延迟加载模块,在加载延迟加载模块后,页面以某种方式未经身份验证(例如通过在同一浏览器的不同选项卡中以不同角色登录),所以当我们尝试访问之前延迟加载的模块的组件,它们可以在以前加载的选项卡上成功访问。谁能解释为什么会发生这种情况或任何其他方式来处理这种情况?

注意:我根据用户角色加载了多个延迟加载的模块,延迟加载的模块可能具有相同的一个或多个子组件

代码:

主路由.module.ts

在人员-routing.ts

在 admin-routing.ts

StaffGuardService 和 AdminGuardService 验证用户的角色并允许访问相应的路由。

0 投票
2 回答
9234 浏览

angular - Auth Guard canActivate 由于某种原因无法正常工作

当我使用 on 路由添加 AuthGuard 服务时canActivate,当我尝试去时应用程序崩溃 /profile并将我重定向到localhost:4200,甚至没有/home并给出此错误:

错误错误:“[对象对象]”

在此处输入图像描述

我的代码:

app.routing.ts

app.module.ts

auth-guard.service.ts

它不起作用!

0 投票
1 回答
725 浏览

angular - Angular 5 canActivate 总是返回到特定路由的登录页面

我试图通过定义路由保护并将 canActivate 分配给每个想要安全的路由来保护我的应用程序免受未经授权的用户的攻击。这些路由一切正常,例如,当有人想从 url 访问路由时,它将自动重定向到登录页面,除非他/她已登录,然后应用程序将重定向到特定路由。但是有一种路线,当用户登录时,它总是返回登录页面。路由出现这个问题'/verify/:idC',怎么办?

路由.ts:

auth-guard.ts:

auth.service.ts:

验证组件.ts: