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

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

我的代码:

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

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

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

服务:

0 投票
2 回答
57 浏览

arrays - 检查“数据”是否包含数组项

如果数据包含某些“授权”项,我想设置为 true。

授权是这样形成的:

因此,例如,如果数据包含“AGREEMENTS_VIEW”,则设置为 true。

现在,如果我在 K 上设置 2 值,它就不起作用

0 投票
1 回答
44 浏览

angular - 在 Angular 中,如果登录完成,用户不应该被允许再次进入登录页面,直到他注销。如何在 Angular 中实现它

登录后,直到用户注销,登录页面路由不应该被访问。如何在 Angular 中实现它。请用必要的代码给出详细的解释。

0 投票
1 回答
1447 浏览

angular - Angular 6 Route Guard 显示白页

我正在尝试添加一个 Route Guard,它将向 PHP API 发送 JWT,该 API 将根据用户是否经过身份验证返回 true 或 false。通过我的测试,Route Guard 一直有效,直到它真正调用 API。如果 API 返回 false,则守卫按预期工作。但是,如果 API 返回 true,那么守卫似乎想要重定向用户,就好像它返回 false 一样,但它没有显示主屏幕,而是只显示空。

auth.guard.ts

auth.service.ts

我让守卫控制台记录返回的值,以及用户是否被授权,它会显示正确的数据。

0 投票
2 回答
4675 浏览

angular - Angular子路由器出口中组件的条件渲染

我试图找到一种方法来router-outlet根据用户的角色有条件地渲染子路由中的组件。

例如,我有一个 DashboardComponent,其中包含一个router-outlet. 我希望在 child 中呈现的组件router-outlet根据用户角色而有所不同,该角色由令牌传入,而无需指定其他路由。

我希望尝试在接近此的地方编写我的路线:

这种确切的模式当然行不通,因为路由器只看到两条相同的路由路径。

我设法编写了一个服务,该服务使用该canActivate属性来检查用户的角色并根据角色转发到不同的路由:

这将采用不同的 Routes 模式:

现在,这真的很好用。但是,我对这种模式有以下问题:

  1. 我想避免有额外的路线 - 即我不想要dashboard/user,我只想dashboard为不同的用户呈现不同的孩子
  2. 我可以看到这将很快导致我的路线,并且 RoleRouteRedirectService 随着应用程序的增长变得非常复杂
  3. 这感觉不是使用路由保护的正确方法(如果我错了,请纠正我!)
  4. 我觉得必须有一种方法可以从我缺少的路由器内部处理这个问题

如果有人有任何想法,我很想听听他们的意见。我很欣赏这是一个相对复杂的问题 - 如果我错过了任何有用的信息,请发表评论,我会看看可以添加什么。

0 投票
1 回答
2712 浏览

routing - 如何在 navigationStart 路由器事件中暂停路由更改

在我的应用程序中,我有从包(节点模块)公开的路由。所以我不能对节点模块内定义的路由使用 canActivate 或 canDeactivate 。

所以我开始订阅我的应用程序组件中的所有路由更改,并根据条件将用户重定向到不同的路由。

由于条件有 API 调用,因此路由更改不会在 navigationStart 中暂停,而是完成到其他页面的路由,一旦 API 调用成功,重定向就会发生在其他路由上。

我该如何处理?无论如何暂停navigationStart中的路由更改并在API调用之后启用路由,或者是否有任何其他方法可以为所有路由定义canActivate,包括来自节点模块的路由。

0 投票
1 回答
112 浏览

angular - CanActivate:带有套接字侦听器的可观察布尔值

我正在尝试从这样的服务器的套接字中获取属性

数据将返回 true 或 false 所以在我的路由守卫中我有这个

但它告诉我“声明类型既不是'void'也不是'any'的函数必须返回一个值。” 我一直在努力想办法让这项工作发挥作用,但我已经阅读了很多其他问题,但无济于事。控制台日志记录 res 确实给了我真假。

0 投票
0 回答
188 浏览

angular - 限制刷新页面|浏览器限制| 角 6 |

我在我的项目中使用 Angular 6,我需要限制用户刷新页面。

  • 当用户尝试单击浏览器的刷新按钮或按 ctrl+f5 等时,我想限制用户并为其显示页面。

如果他正在刷新页面,则显示警报消息

0 投票
0 回答
1629 浏览

angular - Angular 6静态变量不断重置为“未定义”

我有一个了解可注入服务的“Services.Module”设置。它被加载到“imports”下的“app.module”中。一切正常,应用程序运行良好,可以调用多个服务上的端点。但是,在授权服务上,我有一个类似于:

我用一个登录组件来调用它,比如:

为这样的路由设置了路由保护:

守卫被击中,世界一切正常,如下图所示:

问题是,如果我在浏览器上,然后手动执行(根)/类别,则 AuthService 上的“jwt”静态变量设置为未定义。 如果我想保留一个变量,我可以设置和重置 GLOBALLY 和 REFERENCE IT 而不会变成为守卫重置的实例,Angular 6 中的最佳实践是什么? 我基本上只想去'token you now are blahblahblah',直到我刷新浏览器或重新启动应用程序,我希望你的状态保持不变。

0 投票
1 回答
365 浏览

angular - 我可以从 `canActivate: AuthGuard` 中读取路由参数的值吗?

然后AuthGuard的构造函数:

...但是两者.params.snapshot.params都是空的,并且不能:l从那里读取任何参数的值(“语言”的缩写)。

所以问题:如果有未经授权的访问,我如何重定向到另一个页面,让我的动态 :l到位?


PSdata不起作用(是吗?),因为它可以用于编译时已知数据而不是动态数据。