【问题标题】:Angular authentication why save token in headers?Angular 身份验证为什么将令牌保存在标头中?
【发布时间】:2015-10-11 20:11:45
【问题描述】:

我是网络身份验证的新手,需要澄清一下。

我见过人们在 angularjs $rootscope 旁边实现基于令牌的身份验证来保存登录的用户信息。

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

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

提前谢谢你。

【问题讨论】:

  • 我通常将整个用户对象保存在 rootScope 上,这样就不必在通常使用用户的整个配置文件信息的每个页面上进行调用。最近,在节点中,我正在使用 passport.js 并仅在页面上使用 angular 功能进行后端身份验证,它的魔力确实有帮助。这是非常模块化的,因为每个 Angular 应用程序本质上都是自包含的。

标签: angularjs node.js mongodb authentication client


【解决方案1】:

当您说“angularjs 应用程序将仅检查其自己的变量以识别用户登录”时,我认为您无意中将其钉住了。

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

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

至于将其保存在 rootScope 中,这主要是人们为他们总是希望可用的东西做的一种方便的事情,因此他们不需要在所有控制器中获取数据。我倾向于在 ui-router 或共享工厂中使用抽象状态来代替,但这几乎是同一件事。

【讨论】:

    猜你喜欢
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多