2017-10-18 16 views
0

node.jsとRedis(Redisパッケージ)を使用してログインシステムを作成したいが、入力データとデータベースデータを比較するたびに、混乱する結果になる。これが最初の方法です:ログインシステム - Node.jsとRedis

私はログイン名とパスワードはOKですプラスそれは Example 1 第二の例をたerrMsg機能を実行しない場合であっても、偽得続ける
const Redis = require("redis"); 
const client = Redis.createClient(); 
exports.userLogin = (username, password, errMsg, successMsg, res) => { 
    client.keys("user*", (err, replies) => { 
    let isFound = false; 
    for (let i = 0; i < replies.length; i++) { 
     client.hgetall(replies[i], (err, value) => { 
     if (value.user === username && value.password === password) { 
      isFound = true; 
     } 
     }); 
    } 
    console.log(isFound); 
    if (isFound) { 
     successMsg(username, res); 
    } else { 
     errMsg(res); 
    } 
    }) 
)} 

exports.userLogin = (username, password, errMsg, successMsg, res) => { 
    client.keys("user*", (err, replies) => { 
     for (let i = 0; i < replies.length; i++) { 
      client.hgetall(replies[i], (err, value) => { 
      if (value.user === username && value.password === password) { 
       successMsg(username, res); 
      } else { 
       console.log("length: ", replies.length - 1); 
       console.log("i: ", i); 
       if(replies[i] === replies.length - 1) { 
       errMsg(res); 
       } else { 
       console.log("else statement: ", replies[i] === replies.length - 1); 
       return true; 
       } 
      } 
      }); 
     } 
     }) 
)} 

Example 2

パスワードとログインがOKでも動作しますが、ページに何かがロードされていてerrMsg関数が実行されないため、パスワードが正しくない場合は動作しません。あなたはなにか考えはありますか?

+0

'hgetall'は非同期呼び出しですので、結果を得る前に' isFound'のテストが行​​われた場合に起こります。 –

+0

@ t.nieseこのコードを変更して動作させるにはどうすればよいですか? – miqezjo

+0

もう1つの問題は、ループ内で非同期呼び出しを作成することです。 –

答えて

1

可能であれば、redisを使用してユーザーを格納するのに適したものに変更します。

それ以外の場合は、データの保存方法を変更してください。あなたはすべてのユーザーを読んでそのように繰り返すことは望ましくありません。 dbクエリができるだけ世話をするようにしてください。おそらく1つの方法は、ユーザー名をキーの一部にすることで、正しいユーザーを直接検索し、そこからパスワードを確認することができます。

パスワードを保存してログインするセキュリティの部分を忘れないでください。セキュアにする必要がある場合は、パスワードをハッシュし、パスワードソルトを追加します。

+0

私はRedisを使う必要があります。私は今すぐテストしているので、パスワードはハッシュされるでしょう。私はユーザーとしてキーを試してみる – miqezjo

関連する問題