Javascript JWT本地存储、cookie和页面重新加载

Javascript JWT本地存储、cookie和页面重新加载,javascript,jwt,local-storage,Javascript,Jwt,Local Storage,我理解基于cookie和基于JWT的身份验证之间的区别 我知道在通过fetch调用API之前,我可以访问本地存储以获取令牌值并通过请求传递它。 如果我重新加载页面,这将如何工作?如果我使用了cookies,它将在HTTP请求中自动发送 请帮助澄清。您的服务器应向您的客户端发送仅限http的cookie。cookie可能包含jwt令牌。然后,只需将此cookie附加到您的所有请求 如果您使用的是axios,则可以使用凭据为true的。如果您正在使用香草XHR获取更多信息 因此,当用户打开页面,调用

我理解基于cookie和基于JWT的身份验证之间的区别

我知道在通过fetch调用API之前,我可以访问本地存储以获取令牌值并通过请求传递它。 如果我重新加载页面,这将如何工作?如果我使用了cookies,它将在HTTP请求中自动发送


请帮助澄清。

您的服务器应向您的客户端发送仅限http的cookie。cookie可能包含jwt令牌。然后,只需将此cookie附加到您的所有请求

如果您使用的是axios,则可以使用凭据为true的
。如果您正在使用香草XHR获取更多信息

因此,当用户打开页面,调用服务器,并知道他是否登录时。如果是这样,只需在sessionStorage中添加一个
isLogged:true


这将是一个简单而安全的解决方案。

当您重新加载页面时,localstorage中的数据不会被删除。正确。我在想,如果我重新加载页面,浏览器将如何将JWT字符串传递给服务器。如果是ajax调用,我可以访问localstorage并将其随请求一起传递。浏览器本身不处理localstorage,因此不会包含JWT字符串。谢谢@FelixKling:您是否建议对启用授权和身份验证的多页应用程序使用like,我们不能使用存储在本地存储中的JWT?Hi@DoneDeal0,那么我可以确认将JWT与本地存储一起使用不适合多页应用程序吗?您可以。这根本不安全。任何人和任何脚本都可以访问和解码它。如果您希望您的令牌是安全的,请使用http-only cookie。我仍然不知道如何将JWT存储在localstorage中与多页应用程序配合使用。我的申请表中有A页、B页、C页。从A页开始,我登录并重定向到B页。从B页开始,如果我进行页面刷新,后端服务器如何知道我是一个登录用户(因为JWT存储在localstorage中,不会自动通过浏览器获取B页的get请求)?如果您在本地存储中存储了JWT,您可以在前端检查它,并知道用户已登录。然后可以根据此信息阻止api调用。但“正确”的方法是将cookie传递给所有api请求,以便后端可以在允许访问路由之前对其进行解析并检查其有效性(它是否来自正确的域、是否仍然有效等)。