Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度身份验证为什么将令牌保存在头中?_Angularjs_Node.js_Mongodb_Authentication_Client - Fatal编程技术网

Angularjs 角度身份验证为什么将令牌保存在头中?

Angularjs 角度身份验证为什么将令牌保存在头中?,angularjs,node.js,mongodb,authentication,client,Angularjs,Node.js,Mongodb,Authentication,Client,我是新的网络认证,需要一些澄清 我见过有人在angularjs$rootscope旁边实施基于令牌的身份验证,以保存登录的用户信息 如果angularjs应用程序只检查自己的变量以识别用户登录,那么为什么需要在每次请求时将令牌附加到头上 同样,如果每个头中都有一个令牌,为什么只需检查客户端的头以了解用户是否已登录?如果是这样,我不明白为什么要使用$rootscope来保存登录用户的信息 提前谢谢。我想你无意中说angularjs应用程序只会检查它自己的变量以识别用户登录 前端通常只会相信它拥有的

我是新的网络认证,需要一些澄清

我见过有人在angularjs$rootscope旁边实施基于令牌的身份验证,以保存登录的用户信息

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

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


提前谢谢。

我想你无意中说angularjs应用程序只会检查它自己的变量以识别用户登录

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

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


至于将其保存在rootScope中,这主要是为了方便人们做一些他们总是希望可用的事情,所以他们不需要在所有控制器中获取数据。我倾向于在ui路由器或共享工厂中使用抽象状态,但基本上是相同的。

我通常将整个用户对象保存在rootScope上,这样就不必在通常使用用户的整个配置文件信息的每个页面上进行调用。最近,在node中,我使用passport.js,仅在页面上使用angular函数进行后端身份验证,它的魔力确实有帮助。这是非常模块化的,因为每个angular应用程序基本上都是独立的。