【问题标题】:Importance of implementing Angular Guards实施 Angular Guards 的重要性
【发布时间】:2017-03-20 19:11:54
【问题描述】:

在我们的应用程序中,我们根据用户角色限制了路线(导航)。是否绝对有必要实施 Angular Guards 来提供/限制对路由的访问?

它是否以某种方式提供了额外的安全性,而不是基于来自 JavaScript/HTML/plain Angular 的用户角色限制访问(即通过显示和隐藏链接以及显示/隐藏数据)?

【问题讨论】:

  • 它们只是一种方便的方法。使用它们没有额外的安全性。无论如何,必须在服务器上强制执行安全性。

标签: javascript angular


【解决方案1】:

Angular Guards 只是一个路由问题。它们是阻止路由器导航到特定页面的元素,无论它们如何触发该导航(通过链接、按钮或直接将 url 输入到位置栏)。

但是,与任何 javascript 框架一样,这种“安全性”并不是真正的安全性,而是更多的用户便利。由于网络的性质,任何人都可以干扰客户端(即浏览器)上的任何数据/代码,因此,在客户端 JavaScript 中实现的任何内容都不应被视为真正的安全性。您必须在后端系统上实施真正的安全检查。

还要注意,由于 Angular Guards 只是一个 Angular Router 问题,那么如果你没有使用官方的 Angular 路由器,它们就没有任何意义。

【讨论】:

  • 我们使用的是官方的Angular Router;但不是路线守卫。如何通过在浏览器地址栏中输入直接 URL 来阻止用户访问数据?当前限制仅针对链接和按钮,根据用户角色隐藏它们。
  • 这就是路由守卫的真正目的——防止这种情况发生。如果您不想使用路由守卫,那么您可以在您的各个组件中进行“路由守卫”检查,并在检查失败时让它们引导用户离开,但从字面上看,这与路由守卫的目的相同,所以为什么不使用提供的功能?
【解决方案2】:

我写了一篇文章,解释了有关 Guards 和 Interceptors 等的所有内容 http://agdev.tech/2021/03/18/angular-authentication-interceptors-and-guards/ 还提供了一个 stackblitz 可能会有所帮助。

【讨论】:

  • 虽然链接不错,但可以在这里添加答案内容吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 2012-05-11
  • 2020-12-08
  • 2023-03-21
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
相关资源
最近更新 更多