1

everyauth.everymodule.findUserById は、everyauth が req.session から取得する id パラメータを使用して呼び出されます。これを使用して、req.user に渡されるユーザー情報をロードできます。

ノード app.js サーバーが再起動されると、localhost でセッションがクリアされます。

私がやりたいのは、サーバーの再起動時にIDを認識し、everymodule.findUserBy Idがそのことを実行できるように、everyauthに渡すことができるユーザーIDを含むCookieを設定することです。

Expressjs を使用していますが、connect-mongodb と cookie-sessions の両方が機能しないことがわかりました。では、これにアプローチするための提案された方法は何でしょうか?

つまり、すべての認証にユーザー情報を事前入力する方法はありますか?

4

1 に答える 1

3

Expressjs の外部で永続的なセッション ストアをセットアップする必要があると思います。デフォルトでは、expressjs のセッションはメモリ内に保持されるため、サーバーを再起動すると失われます。データベースにMongoDbを使用しているにもかかわらず、結局connect-redisoverに行きました。connect-mongoセッション データをデータベースとは別に保持したかったのです。必要かどうかはわかりませんが、セットアップは非常に簡単でした。

また、このトピックについて話している間、セッションで遭遇した他のいくつかのハードルを以下に示します。

  • サーバー時刻が正しく設定されていることを確認してください。そうしないと、セッションが早期に期限切れになる可能性があります。
  • 開発中に 1 つ気になったのは、ブラウザーが提供するユーザー エージェント文字列によってセッションがフィンガープリントされるという事実です。最初のリクエストの後にユーザー エージェント文字列を変更していたプラグイン (FirePHP、Firebug 拡張機能) が firefox で有効になっていることがわかりました。これにより、ブラウザが閉じられるまでのみ有効であるかのようにセッションが動作していました。それを追跡するのに数日かかりました。

お役に立てれば。

于 2011-12-01T07:18:35.590 に答える