问题标签 [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.
angular - Route Guard:如何根据 HttpPost 设置的参数设置 true 或 false?
我的代码:
评论是我喜欢做的,但我真的不知道我应该写什么,因为这是我第一次使用 angular 4。
基本上,如果已发送来自授权的某些参数,我想设置 True,如果服务中没有参数,则设置为 false。
我希望这很清楚,如果您需要更多信息,请告诉我:)
服务:
arrays - 检查“数据”是否包含数组项
如果数据包含某些“授权”项,我想设置为 true。
授权是这样形成的:
因此,例如,如果数据包含“AGREEMENTS_VIEW”,则设置为 true。
现在,如果我在 K 上设置 2 值,它就不起作用
angular - 在 Angular 中,如果登录完成,用户不应该被允许再次进入登录页面,直到他注销。如何在 Angular 中实现它
登录后,直到用户注销,登录页面路由不应该被访问。如何在 Angular 中实现它。请用必要的代码给出详细的解释。
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
我让守卫控制台记录返回的值,以及用户是否被授权,它会显示正确的数据。
angular - Angular子路由器出口中组件的条件渲染
我试图找到一种方法来router-outlet
根据用户的角色有条件地渲染子路由中的组件。
例如,我有一个 DashboardComponent,其中包含一个router-outlet
. 我希望在 child 中呈现的组件router-outlet
根据用户角色而有所不同,该角色由令牌传入,而无需指定其他路由。
我希望尝试在接近此的地方编写我的路线:
这种确切的模式当然行不通,因为路由器只看到两条相同的路由路径。
我设法编写了一个服务,该服务使用该canActivate
属性来检查用户的角色并根据角色转发到不同的路由:
这将采用不同的 Routes 模式:
现在,这真的很好用。但是,我对这种模式有以下问题:
- 我想避免有额外的路线 - 即我不想要
dashboard/user
,我只想dashboard
为不同的用户呈现不同的孩子 - 我可以看到这将很快导致我的路线,并且 RoleRouteRedirectService 随着应用程序的增长变得非常复杂
- 这感觉不是使用路由保护的正确方法(如果我错了,请纠正我!)
- 我觉得必须有一种方法可以从我缺少的路由器内部处理这个问题
如果有人有任何想法,我很想听听他们的意见。我很欣赏这是一个相对复杂的问题 - 如果我错过了任何有用的信息,请发表评论,我会看看可以添加什么。
routing - 如何在 navigationStart 路由器事件中暂停路由更改
在我的应用程序中,我有从包(节点模块)公开的路由。所以我不能对节点模块内定义的路由使用 canActivate 或 canDeactivate 。
所以我开始订阅我的应用程序组件中的所有路由更改,并根据条件将用户重定向到不同的路由。
由于条件有 API 调用,因此路由更改不会在 navigationStart 中暂停,而是完成到其他页面的路由,一旦 API 调用成功,重定向就会发生在其他路由上。
我该如何处理?无论如何暂停navigationStart中的路由更改并在API调用之后启用路由,或者是否有任何其他方法可以为所有路由定义canActivate,包括来自节点模块的路由。
angular - CanActivate:带有套接字侦听器的可观察布尔值
我正在尝试从这样的服务器的套接字中获取属性
数据将返回 true 或 false 所以在我的路由守卫中我有这个
但它告诉我“声明类型既不是'void'也不是'any'的函数必须返回一个值。” 我一直在努力想办法让这项工作发挥作用,但我已经阅读了很多其他问题,但无济于事。控制台日志记录 res 确实给了我真假。
angular - 限制刷新页面|浏览器限制| 角 6 |
我在我的项目中使用 Angular 6,我需要限制用户刷新页面。
- 当用户尝试单击浏览器的刷新按钮或按 ctrl+f5 等时,我想限制用户并为其显示页面。
如果他正在刷新页面,则显示警报消息
angular - Angular 6静态变量不断重置为“未定义”
我有一个了解可注入服务的“Services.Module”设置。它被加载到“imports”下的“app.module”中。一切正常,应用程序运行良好,可以调用多个服务上的端点。但是,在授权服务上,我有一个类似于:
我用一个登录组件来调用它,比如:
为这样的路由设置了路由保护:
守卫被击中,世界一切正常,如下图所示:
问题是,如果我在浏览器上,然后手动执行(根)/类别,则 AuthService 上的“jwt”静态变量设置为未定义。 如果我想保留一个变量,我可以设置和重置 GLOBALLY 和 REFERENCE IT 而不会变成为守卫重置的实例,Angular 6 中的最佳实践是什么? 我基本上只想去'token you now are blahblahblah',直到我刷新浏览器或重新启动应用程序,我希望你的状态保持不变。
angular - 我可以从 `canActivate: AuthGuard` 中读取路由参数的值吗?
然后AuthGuard
的构造函数:
...但是两者.params
和.snapshot.params
都是空的,并且不能:l
从那里读取任何参数的值(“语言”的缩写)。
所以问题:如果有未经授权的访问,我如何重定向到另一个页面,让我的动态 :l
到位?
PSdata
不起作用(是吗?),因为它可以用于编译时已知数据而不是动态数据。