Javascript 使用localStorage进行React身份验证

Javascript 使用localStorage进行React身份验证,javascript,reactjs,Javascript,Reactjs,我正试图找出如何为我的React应用程序构建一个基本的登录/注册功能。因此,我正在考虑创建一个HoC/父类,该类执行诸如登录和检查用户是否登录之类的操作。 现在我来告诉大家,存储用户是否登录的最佳方法。我看到的是使用本地存储。但是任何一个真正正确的人都可以访问它,所以我可以只存储一个标志,上面写着isLoggedIn或其他什么?我是否需要加密一些令牌,例如username.password,然后在每个页面加载时调用数据库?这似乎有点过分。或者理解错误?您可以使用JSON Web令牌() 当用户登

我正试图找出如何为我的React应用程序构建一个基本的登录/注册功能。因此,我正在考虑创建一个HoC/父类,该类执行诸如登录和检查用户是否登录之类的操作。
现在我来告诉大家,存储用户是否登录的最佳方法。我看到的是使用本地存储。但是任何一个真正正确的人都可以访问它,所以我可以只存储一个标志,上面写着isLoggedIn或其他什么?我是否需要加密一些令牌,例如username.password,然后在每个页面加载时调用数据库?这似乎有点过分。或者理解错误?

您可以使用JSON Web令牌()

当用户登录时,调用后端的say/login来检查数据库的密码。如果成功,则发出一个包含用户名及其角色的JWT,例如(不是密码)

然后,您可以通过直接使用Javascript验证令牌的加密签名来判断用户是否登录(如果可读内容(如用户名)已更改,则签名将不再匹配)。这样,在令牌过期之前,您不需要查询数据库

我看到的是使用本地存储。但任何一个真正正确的人都可以访问它


否。它还具有仅可从同一域访问的over cookies。原则上,您的令牌是有可能被盗的(例如,当您不在时,您可以从笔记本电脑上的开发工具中复制),但您将添加到令牌中的过期时间将使其仅在几个小时内有效。

尽管在浏览器控制台中,我不能执行类似localStorage.getItem()的操作吗在受害者计算机上,然后在我的计算机上设置值?@user1009698是的,您可以,并使用它直到过期。不过,对于cookie也是一样,这不是localStorage的错误:只需执行
document.cookie
,而不是
localStorage.getItem(.)
。当你不在时锁定你的屏幕@JulienD这并非完全正确,因为javascript无法访问带有
HttpOnly
标志的cookie。