我是网络身份验证的新手,需要一些澄清。
我见过人们在angularjs $ rootscope旁边实现基于令牌的身份验证,以保存登录的用户信息。
如果angularjs应用程序只检查自己的变量以识别用户登录,为什么需要在每个请求时将标记附加到Headers?
同样,如果每个Headers中都有一个令牌,为什么只需检查客户端的Headers以了解用户是否已登录?如果是这样,我不明白为什么使用$ rootscope来保存登录用户的信息。
提前谢谢。
答案 0 :(得分:0)
我认为当你说“angularjs应用程序只检查自己的变量以识别用户登录时”时,你无意中将其钉住了。
前端通常只相信它拥有的任何类型的令牌都是有效的,因为没有办法对它进行独立验证(记住,没有前端安全性这样的事情)。然而,后端不能这样做,它需要在每个请求上实际验证用户是他/她声称的人,否则您的应用程序是不安全的。因此,您在每个请求上发送令牌,以便后端可以检查它。
如果您只是信任前端说明谁登录,那么没有什么可以阻止攻击者使用javascript绕过该检查并控制他们想要的任何帐户。验证总是需要在后端完成。
至于在rootScope中保存它,这主要是人们为他们总是想要的东西做的便利,所以他们不需要在所有控制器中获取数据。我倾向于在ui-router或共享工厂中使用抽象状态,但它大致相同。