令牌认证和使用cookie的身份验证之间有什么区别?
我正在尝试实施Ember Auth Rails演示,但我不明白使用令牌认证背后的原因,如Ember Auth常见问题解答中描述的"为什么是令牌认证?"
在以API为中心的应用程序上使用JWT而不是Cookie时有很多优点,我知道您可以在通过浏览器访问应用程序时将令牌存储在sessionStorage上.您可以在JS代码上设置拦截器,以便在GET请求的Authorization标头上注入JWT令牌 - 只要这些GET请求来自对用户进行身份验证的相同代码.
但是,当用户通过身份验证后会发生什么,然后打开新选项卡并尝试访问应用程序/站点的不同受限区域(甚至同一区域)?在这种情况下,没有拦截器在新选项卡上的Authorization标头上注入令牌.我想服务器将收到GET请求,在Authorization标头上查找JWT令牌,但不会找到它,拒绝请求.
当您使用Cookie时,它们始终由浏览器本地发送,您不必担心新的选项卡和身份验证.
有没有办法在用户在第一个选项卡中进行身份验证时为浏览器上的域全局设置Authorization标头?如果有的话,这个问题的常用解决方案是什么?