私は現在、複数のユーザーを扱う Web アプリケーションに取り組んでいます。現在は機能していますが、すぐに概要を説明するいくつかの実際の悪い慣行に依存しています。
データベース システムとして MySQL を使用しています。現在のアプリケーションを更新しているため、すべての下位互換性を確保したいと考えています。それ以外の場合は、MongoDB などを調べます。
ユーザーは、適切な名前のテーブルに格納されますlogin
。これには、ユーザー名、電子メール、ハッシュ化されたパスワードなどが含まれ、JSON でエンコードされた好みのオブジェクトを含むフィールドが含まれます。メタテーブルを使用してこれを行う本当の理由はありません。
したがって、悪い習慣:
- パスワードを除く (これは内部専用アプリですが) ユーザーのログイン行全体を Cookie に保存しています。JSONエンコードされています。
- ユーザーがログインすると、Node.js 経由でのみユーザー名とパスワードを読み取ることができる安全な HTTP Cookie が作成されるため、ユーザーは引き続き自動的にログインし続けることができます。
app.get('*')
ユーザーが 3 つの Cookie をacc
保持し、新しい設定で Cookieを更新することを常に保証するルートがあります。これは、ユーザーがページを切り替えたり、新しい AJAX アイテムにアクセスしたりするたびに (すべて同じルートで)、更新された Cookie を持っていることを意味します。- ユーザーがアクションを実行するたびに、ユーザー ID を取得するためにこれを行います
JSON.parse(res.cookies.acc).agent_id
。
現在、各ユーザーはページ上の特定の要素に対してアクションを実行できます。これは、アプリケーションが内部にあり、誰もがその内部のデータで作業できるため、全員に影響します。
何を達成したいのか、PHP でそれをどのように行うべきかはわかっていますが、Node.js で最も効果的な方法がわかりません。
アクションを実行したユーザーを取得し、その設定などを適切に更新できるユーザーモジュールの作成を開始しました。これは WIP であることを念頭に置いて、ここで確認できます。このモジュールで私が抱えている問題は、Express の「一部」ではないため、ユーザーの Cookie にアクセスできないことです。これは、最後の悪い習慣を説明しています。
このようなシステムを処理し、悪い習慣をなくす最善の方法は何でしょうか?