Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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
如何使用JavaScript LocalStorage进行安全登录?_Javascript_Html_Reactjs_Local Storage - Fatal编程技术网

如何使用JavaScript LocalStorage进行安全登录?

如何使用JavaScript LocalStorage进行安全登录?,javascript,html,reactjs,local-storage,Javascript,Html,Reactjs,Local Storage,我正在建立一个网站,需要用户身份验证。我用React来做这个。如何使登录系统安全? 我所有的东西都在本地存储中。我担心,有了这个解决方案,任何人都可以在浏览器中创建自己的本地存储,并使用它作为真实用户登录和身份验证。 以下是我的登录功能: login(){ if (typeof(Storage) !== "undefined") { localStorage.setItem("userId",this.state.user._id); localStorage.setItem("us

我正在建立一个网站,需要用户身份验证。我用React来做这个。如何使登录系统安全? 我所有的东西都在本地存储中。我担心,有了这个解决方案,任何人都可以在浏览器中创建自己的本地存储,并使用它作为真实用户登录和身份验证。 以下是我的登录功能:

login(){  
if (typeof(Storage) !== "undefined") {
  localStorage.setItem("userId",this.state.user._id);
  localStorage.setItem("username", this.state.user.username);
  localStorage.setItem("email", this.state.user.email);
  localStorage.setItem("date", this.state.user.date); 
  this.setState({isLoggedIn: true}); 
  localStorage.setItem("isLoggedIn", this.state.isLoggedIn);
  if(localStorage.getItem("isLoggedIn")){
    console.log("Congratulations "+localStorage.getItem("username")+", you are now logged in."); 
    setTimeout(function () { 
      window.location.pathname="/user";
    }.bind(this),500);
  }
} 
else {
  console.log("No support for local storage");
}}

我应该做哪些更改以使其更安全?或者我应该转移到另一个解决方案,而完全不使用本地存储?

查看会话或令牌的可能副本您的服务器应该生成JSON Web令牌(或其他类型的“签名令牌”),并在用户登录时将其发送到客户端。将令牌存储在本地存储器中。然后,对于服务器的每个请求,客户机都应该包含令牌。服务器将验证令牌,因此它将检测用户何时修改或创建自己的令牌(这些令牌将无法通过验证)。这与使用cookies的策略几乎相同。