この質問の言い回しから、Express モジュール (Passport など) を使用することによるオーバーヘッドは、あなたの心配が最も少ないと思います ;-)
まず、どのメカニズムを使用するかを決定する必要があります。
認証には、ユーザー名とパスワードの組み合わせを使用しますか、それとも Google、Facebook、Twitter などのサードパーティ サービス (「OAuth」など) を使用しますか? サードパーティのサービスを使用しない限り、登録 (および場合によってはメールアドレスの確認など) も処理する必要があります。ユーザー名とパスワードの組み合わせについても、自分で作成するか、ブラウザ ベースの「basic-auth」メカニズムを使用しますか?
認証後、認証されたことを認識 (およびサーバー側で検証) するために、セッション トークンを格納するためのセッション メカニズムが必要です。これらは通常、ブラウザーの Cookie に保存され、必要な期間簡単に保持でき、サーバー側のデータベース内のトークンを使用して、関連する要求ごとに検証されます。
最後に、ログアウト メカニズムと「パスワードを忘れた」手順が必要です (最初は手動で行う可能性が非常に高いでしょう...)。
これらすべてがまったく新しいものである場合は、まず既製のものを使用してみることをお勧めします (Passport について言及しています)。基本をマスターしたら、自由に自分のものに置き換えてください。Passport または Everyauth を使用することの「利点」は、現実的には自分で記述できるより多くのオプションをカバーすることです。そのため、システムをそれらのいずれかを使用するように調整したら、Facebook ログインなどを追加することは非常に多くなります。簡単です(誰かがすでにあなたのためにほとんどのものを考え出しています).
正直に言うと、Node エコシステムでそのようなことを処理するモジュールのほとんどは、使用することを決めたソリューションの上にあるかなり薄いラッパーです。とにかくそれらを使用する問題。対極にあるのは、Drupal などの既製のシステムで、すべてが機能しますが、独自のシステムを作成する限り、多少の制約を受けます。
ゼロから独自のものを作成することが絶対に必要なユースケースがありますが、必要に応じて後でこれを行うことを止めるものは何もありません (そして、他の人が書いたコードの助けを借りて基本を習得した後)。
頑張ってください!