3

node.js と socket.io を使用する Web ツールを開発しました。これは 1 ページの Web サイトであり、node.js を使用してソーシャル メディア Web サイトからデータを取得し、同じページに表示します。Web サイトにサイト固有のログイン システムを追加したいのですが、' Express ' や ' Passport ' を使用したくありません。Web サイトに多くの負荷がかかるため、不要です。

私はnode.jsの初心者で、ログインしたユーザーのセッションを維持するためにnode.jsでログインシステムを作成する必要があるかどうかを知りたいですか?

注:ログイン時間、検索クエリ、ヒートマップなどのユーザーデータを記録するためにセッションを維持する必要があります。

前もって感謝します。必要に応じて、質問の特定の部分を詳細に説明できます。

4

2 に答える 2

2

Express や Passport (または少なくともいくつかの接続のミドルウェア) のようなものを使用することは、長期的には間違いなく簡単になります (アプリが成長する場合)。

  1. Cookie パーサー: すべての要求で認証の詳細をパラメーターとして送信する必要はないため、セッションの詳細を Cookie に入れる必要があります。ヘッダーを使用して手動で Cookie を設定するか、API を適切にラップするノード モジュールを使用して設定できます。

  2. セッション ストレージ: すべての「ログイン時間、クエリ、およびヒートマップ データ」を Cookie に入れることができますが、各要求の Cookie でセッション ID を送信し、他のデータ サーバー側をデータベースに保存する方が適切です。オプションはmongoose、 redis などです。

ソースを読むことは非常に勉強になるので、connect のcookieParsercookieSessionを読んでください。コードはそれほど多くなく、API ドキュメントには実際のソースが含まれているため、非常に簡単に学ぶことができます。楽しみ!:)

于 2012-07-30T19:38:43.973 に答える
1

この質問の言い回しから、Express モジュール (Passport など) を使用することによるオーバーヘッドは、あなたの心配が最も少ないと思います ;-)

まず、どのメカニズムを使用するかを決定する必要があります。

認証には、ユーザー名とパスワードの組み合わせを使用しますか、それとも Google、Facebook、Twitter などのサードパーティ サービス (「OAuth」など) を使用しますか? サードパーティのサービスを使用しない限り、登録 (および場合によってはメールアドレスの確認など) も処理する必要があります。ユーザー名とパスワードの組み合わせについても、自分で作成するか、ブラウザ ベースの「basic-auth」メカニズムを使用しますか?

認証後、認証されたことを認識 (およびサーバー側で検証) するために、セッション トークンを格納するためのセッション メカニズムが必要です。これらは通常、ブラウザーの Cookie に保存され、必要な期間簡単に保持でき、サーバー側のデータベース内のトークンを使用して、関連する要求ごとに検証されます。

最後に、ログアウト メカニズムと「パスワードを忘れた」手順が必要です (最初は手動で行う可能性が非常に高いでしょう...)。

これらすべてがまったく新しいものである場合は、まず既製のものを使用してみることをお勧めします (Passport について言及しています)。基本をマスターしたら、自由に自分のものに置き換えてください。Passport または Everyauth を使用することの「利点」は、現実的には自分で記述できるより多くのオプションをカバーすることです。そのため、システムをそれらのいずれかを使用するように調整したら、Facebook ログインなどを追加することは非常に多くなります。簡単です(誰かがすでにあなたのためにほとんどのものを考え出しています).

正直に言うと、Node エコシステムでそのようなことを処理するモジュールのほとんどは、使用することを決めたソリューションの上にあるかなり薄いラッパーです。とにかくそれらを使用する問題。対極にあるのは、Drupal などの既製のシステムで、すべてが機能しますが、独自のシステムを作成する限り、多少の制約を受けます。

ゼロから独自のものを作成することが絶対に必要なユースケースがありますが、必要に応じて後でこれを行うことを止めるものは何もありません (そして、他の人が書いたコードの助けを借りて基本を習得した後)。

頑張ってください!

于 2012-07-30T19:39:29.370 に答える