Angular 身份验证 为什么要在 headers 中保存令牌?

Angular authentication why save token in headers?

我是 Web 身份验证的新手,需要一些说明。

我看到有人在 angularjs $rootscope 旁边实施基于令牌的身份验证来保存 logged-in 用户信息。

如果 angularjs 应用程序只检查自己的变量来识别用户登录,为什么需要在每次请求时将令牌附加到 Headers?

同样,如果每个 Headers 中都有一个令牌,为什么只检查客户端的 Headers 以了解用户是否已登录?如果是这样,我不明白为什么要使用 $rootscope 来保存 logged-in 用户的信息。

提前致谢。

我认为你在说 "the angularjs application will only check its own variable to identify that the user logged in" 时无意中指出了它。

前端通常只相信它拥有的任何类型的令牌都是有效的,因为无法对其进行独立验证(请记住,没有前端安全性这样的东西)。然而后端无法做到这一点,它需要根据每个请求实际验证用户是否是 he/she 声称的用户,否则您的应用程序是不安全的。因此,您在每个请求上发送令牌,以便后端可以检查它。

如果您只是相信前端说出谁已登录,那么没有什么可以阻止攻击者使用 javascript 简单地绕过该检查并控制他们想要的任何帐户。验证始终 需要在后端完成。

至于将它保存在 rootScope 中,这主要是人们为他们总是想要的东西做的一种方便的事情,这样他们就不需要在所有控制器中获取数据。我倾向于在 ui-router 或共享工厂中使用抽象状态,但它们基本上是一样的。