4

ほとんどの Web アプリケーションと同様に、node.js アプリで現在のユーザーを参照する方法が必要です。

ログイン/セッション システムは動作していますが、今日、あるブラウザーでアプリにログインして別のブラウザーで表示すると、最初のブラウザーで表示されるのと同じデータが表示されることに気付きました。

現在、現在のユーザーに関する情報をグローバル app.current_user オブジェクトに保存していますが、node.js はシングル スレッドであるため、これがすべてのリクエスト/セッションで共有されていることに気付きました。したがって、これは悪い考えです。

現在のユーザーへの参照を保存する正しい方法は何でしょうか? 現在のユーザーは単なるユーザー データのハッシュではなく、Mongoose モデルなので、Cookie に保存するのは得策ではないと思います。

ところで-ユーザーの設定と、ユーザーとその設定で何かを行うたびに再度取得したくないいくつかのことも保存します(これは、単一のリクエスト中にかなりの回数発生する可能性があります)。現在のユーザーをメモリにキャッシュしていると言えるでしょう。

4

4 に答える 4

1

現時点で現在のユーザーに関する情報を保存する正しい場所は、リクエスト オブジェクトにあるようです。

要求オブジェクトを mongoose または他のモジュールに渡すという考えが気に入らない場合は、ルーター/コントローラー/ミドルウェアに変更を加える必要があります。たとえば、アクションでモデルのlastModifiedByユーザー ID を設定できます。Postposts_controller update()

また、かなり新しいdomain機能を使用して現在のユーザー データを保存することもできますが、Mongoose を使用する場合はまだ役に立ちません。Mongoose はまだドメインをサポートしていないからです: https://github.com/LearnBoost/mongoose/pull/ 1337

于 2013-06-28T06:20:10.240 に答える
0

エクスプレスでは、セッションを使用できます

//To set up session 
app.use(express.cookieParser());
app.use(express.session({secret: 'secret pass', store: sessionStore})); 
//To use it
req.session = {user:name , model:mongo_model};
console.log(req.session.user);

  1. ここで簡単な例を見てください
  2. この質問でセッションデータにmongostoreを使用する方法を参照してください
于 2013-03-25T19:43:51.577 に答える