1

私は現在、Monggose-Auth を使用してユーザー認証プロセスを作成しようとしているノード js アプリに取り組んでいます。私は複数のチュートリアルの例と、Mongoose-Auth の使用方法について見つけることができるすべてのガイドを実行しましたが、壁にぶつかりました。

私の基本的なパスワード認証は機能しているようで、正しい場所にリダイレクトされ、ユーザーなどに保持されます。私の問題は、ログイン機能をユーザープロファイルページに追加すると、単にログインにリダイレクトされるという問題があることです。ページ。これは、セッションが何らかの形で失われたためのようですが、everyauth デバッグ出力を見ると (mongoose-auth は everyauth の上に構築されています)、次のように表示されます。

開始ステップ - displayLogin

...完成したステップ

GET /favicon.ico

開始ステップ - extractLoginPassword

...完成したステップ

開始ステップ - 認証

...完成したステップ

開始ステップ - interpretUserOrErrors

...完成したステップ

開始ステップ - getSession

...完成したステップ

開始ステップ - addToSession

...完成したステップ

開始ステップ - RespondToLoginSucceed

...完成したステップ

開始ステップ - RespondToLoginFail

...完成したステップ

GET /ユーザー/プロファイル

開始ステップ - displayLogin

...完成したステップ

GET /favicon.ico

私のアプリはここにあります --> https://github.com/Themitchell/Node-Express-Connect-Mongoose-Auth-Stack <-- 自分で確認したい場合は、すぐにセットアップできます! 正しいpackage.jsonなどを使用するので、実行するだけです

npm install 次に node server.js

他の場所から例を引っ張って試してみることを考えましたが、まだ理解していないものの上にハックするのではなく、問題が何であるかを理解したいと思います!

私が知っている限り、mongoose-authはセッション自体を永続化すべきではありませんが、代わりに、私が正しくやっていると思っていた接続を介してこれを行う必要があります。

プロジェクトで確認するファイルは、次の場所にある可能性があります。

config/environment.js

アプリ/モデル/user.js

そして最後に

config/routes.js には requiresLogin 関数があります (今のところここだけです。

事前にご協力いただきありがとうございます:)

4

1 に答える 1

0

これは完全な答えではありませんが、私のプロジェクトで Auth をどのように処理しているかを見ることができます。Mongoose、Express、Passport + Passport Local を使用して Auth を処理し、connect-mongodb を使用してセッションを永続化しました (完全なスタックを機能させるのは非常に困難でした)。利点は、サーバーの再起動間でもセッションが取得されることです。

主なファイルへのリンク:

重要なこと:

  • Auth.js は、Passport Auth を Mongoose に適応させるのに大いに役立ちます。
  • セッションを永続化するように connect-db を設定するのは簡単ではありませんが、非常に快適です。

connect-db のセットアップ方法を見てみましょう (最もよく見られるのは LoastAndFound.js または .coffee です)。

app.use(express.session({
    secret: 'awesome unicorns',
    maxAge: new Date(Date.now() + 3600000),
    store: new common.mongoStore({
        db: Data.mongoose.connection.db
    }, function(err) {
        return console.log(err || 'connect-mongodb setup ok');
    })
 }));

注:私のコードが完璧ではなく、さらにコメントが必要で、テストされていないことをお許しください。

于 2012-04-19T16:42:00.493 に答える