現在、 HTTPS Node.js サーバーで実行される socket.io ベースのチャットを開発しています。サーバーを実行するための自己署名証明書を作成するための正しい手順を正常に完了しました。CPU と RAM を効率的に使用し、できれば追加の Node.js モジュールを使用しないログイン システムを実装したいと考えています。
現在、これが私のユーザーデータベースのセットアップ方法です。
- サーバーの起動時に、サーバーはユーザー データを含む JSON ファイルを読み取って文字列化し、配列をメモリに読み込みます。データベースのサンプルは次のようになります。
[{"user":"username", "pass":"password", "id":"23a45b"}]
- 「/login.html」がログイン フォームから HTTP POST 要求を送信されると、サーバーは次の FOR ループを実行します。ここ
postdata
で、 は HTTP POST でuserdata
あり、 はユーザー データベースです。for (var i = 0; i < userdata.length; i++) { if (postdata.user === userdata[i].user) { if (userdata[i].pass === postdata.pass) { res.writeHead({"Set-Cookie":"chat_user=" + userdata[i].user}, {"Set-Cookie":"chat_id=" + userdata[i].id}); } } }
- ユーザーが socket.io 経由でメッセージを送信する場合、ユーザー名と ID と共にメッセージを送信します。別の FOR ループは、ユーザー データベースを検索し、ID とユーザー名をクロスチェックして、それらが一致していることを確認します。これは、メッセージが送信されるたびに発生します。
次のシステムは効率的で安全に聞こえますか? どのような点を改善および変更できますか? 私が懸念しているのは、ユーザー データベース全体をメモリに保持するのは、単純なサーバーにとっては負担が大きすぎることと、メッセージが送信されるたびにデータベースをチェックするよりも、CPU がより有用なことを実行している可能性があることです。