私はSymfony2を使用していますが、この質問はかなり一般的です。
ユーザーにログインして、ログイン直後に一定量の「ロール」から選択させたい。これらのロールは、多くの構成を実行するデータベース内のオブジェクトです。
質問:ユーザーが選択した役割を保存するためのベストプラクティスは何ですか?
セッション?しかし、オブジェクトをセッションに格納するのは悪い習慣ではありませんか?セッションでの役割のID?Cookieでの役割のID(またはそのハッシュ)?
あなたの考えをありがとう。
オブジェクト全体ではなく、セッションIDを確実に保存します。特に、オブジェクトのデータがユーザーごとに変更されない場合。実際、オブジェクトのデータが時間の経過とともに変化しない場合は、いくつかの手法の1つを使用してデータをキャッシュできる可能性があります。
情報を保存するためにCookieを使用するかセッションを使用するかは、要件によって異なります。追加のデータ(ロールのID以外)を保存する必要があり、そのようなデータを安全に編集する必要がある場合は、セッションの使用を検討する必要があります。セッションを使用すると、保存されたデータをユーザーが手動で編集できなくなります。それ以外の場合は、サーバーがセッションの保存と取得の面倒な作業をすべて処理する必要がないため、Cookieを使用する方が効率的です。
ロールをセッションに保存することは、ロールが変更されない場合(この場合、ロールをハードコーディングしてロールIDを保存することもできます)、またはロールを簡単に更新できる方法でセッションを保存する場合(データベースセッションの場合)を除いて、お勧めできません。例)。
ID /ハッシュをCookieに保存するのはばかげています-セッションにID/ハッシュを保存できるのに、なぜ別のCookieを追加するのですか?
私の推奨事項:セッションにロールIDを保存します。すべてのリクエストでそれをフェッチすることを心配している場合は、いつでもロールをキャッシュできます。
役割のIDをセッションに保存し、必要なときに必要なオブジェクトの部分を取得します(問題がある場合は、すべてを1つのデータベース呼び出しで保存して保存します)。Cookieよりもセッションをより細かく制御でき、ユーザーはCookieをオフにすることはできません。