2011-11-15 6 views
1

everyauth.everymodule.findUserByIdは、すべてのユーザがreq.sessionから取得するidパラメータで呼び出されます。これは、req.userに渡されるユーザー情報をロードするために使用できます。everyauthとnodejsを使ってユーザID情報を永続化する方法

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

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

私はexpressjsを使用しており、connect-mongodbとcookie-sessionの両方が機能しないことが判明しました。だから、これに近づく方法は何でしょうか?

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

答えて

3

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

、私たちが話題にしている一方で、ここで私がセッションを持つに走った他のハードルのほんの一部です:

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

これが役に立ちます。