0

と を使用して簡単な Web サーバーを作成nodejsexpressました。メールのユーザー名とパスワードによるユーザー認証を実装しました。さらに、ユーザー ID と pwd ハッシュを Cookie に保存する記憶機能があります。ここで、ユーザーがブラウザを閉じるか、ログアウト ボタンをクリックしたときに終了する追加のセッションが必要です。

実装のベストプラクティスはどれですか? セッションは有効期限のある記憶機能と同じで、各リクエストでデータベースに対して資格情報を確認する必要がありますか? (私はこれについて確信が持てません)

使用しているテクノロジー: nodejsexpressmongodb

これはnodejs単なる質問ではありません。問題の一般的な説明を希望します。

4

1 に答える 1

1

最初にこれを片付けさせてください。パスワード ハッシュを cookie に保存すると、パスワード ハッシュを持っていれば誰でもログインできるようになり、なんらかの理由でパスワード ハッシュが公開されてしまうと悲惨なことになります。Cookie の暗号化は問題ありませんが、データベースに保存する実際のハッシュを認証に使用することはできません。これまで。

再認証については、ノードは単一のスレッドで動作するテクノロジーであり、複数のプロセッサやマシンでより多くのインスタンスを実行することでスケーリングされます。セッションを維持することは、データベースへのトリップを回避するための良い考えですが、アーキテクチャについても考慮する必要があります。たとえば、ファイルに保存されたセッション (ala PHP) を使用していて、複数のマシンにスケーリングする必要がある場合はどうなりますか? 少なくとも、何も良いことはありません。そのため、セッションを追跡するための中心点が必要です。

これは、データベース (MongoDB)、Redis など、またはセッションをチェックできる別の集中型メカニズムのいずれかです。いずれにせよ、リクエストを実行してクライアントのセッション値を取得するのに時間を費やす必要があります。保存する必要がある追加の値がない場合は、専用のセッション アーキテクチャ (有効期限が必要など) を作成しても意味がなく、認証を再度実行することが最も簡単で最も論理的なソリューションです。

個人的には、セッションはほとんど必要なく、認証をやり直すだけです。

于 2013-02-07T19:34:24.983 に答える