4

こんにちは、エクスプレスフレームワークを使用してノードでサイトを作成しています。サイトの音楽の再生を停止する必要がないように、facebox を使用してユーザーがログインできるボックスを提示しようとしています。

認証に mongoose-auth/everyauth を使用していますが、これを行う方法がわかりません。

ログインページを部分的にレンダリングできる必要があると思います。私は次のものを持っています: loginLocals を使用することが答えだと思いますか?

どなたか心当たりありませんか!?

var mongoose = require('mongoose')
    , Schema = mongoose.Schema
    , mongooseAuth = require('mongoose-auth');

var everyauth = require('everyauth')
    , Promise = everyauth.Promise;

    var UserSchema = new Schema({});
    UserSchema.plugin(mongooseAuth, {
        everymodule: {
            everyauth: {
                User: function () {
                    return User;
                }
            }
        },
                 password: {
                    loginWith: 'email'
                  , extraParams: {
                                    genre: String
                    }
                  , everyauth: {
                        getLoginPath: '/login'
                      , postLoginPath: '/login'
                      , loginView: 'login.jade'
                      , getRegisterPath: '/register'
                      , postRegisterPath: '/register'
                      , registerView: 'register.jade'
                      , loginSuccessRedirect: '/'
                      , registerSuccessRedirect: '/'

                                , loginLocals: function(req, res) {
                                    //console.log("ASD");
                                return res.partial('toop');
                                }
                    }
        }
    });
4

1 に答える 1

1

ユーザーが音楽を止めずに Everyauth 経由でログインできるようにしたい場合は、facebox のようなライトボックスではできません。ページの読み込みを維持するには (したがって音楽を再生するには) AJAX が必要ですが、OAuth はリダイレクトに依存しているため、AJAX では機能しません。

次のようなことをする必要があります:

  • ユーザーがクリックしてページ「A」にログインすると、ログインプロセスを指す新しいポップアップウィンドウ「B」が開きます
  • Everyauth は、ウィンドウ「B」を関連する OAuth プロバイダーにリダイレクトします。
  • ユーザーが認証され、アクセス許可が付与されます
  • ウィンドウ「B」はサイトにリダイレクトされます
  • プロセスの最後を取得する必要があり、ポップアップ ウィンドウ "B" から、ユーザーが正常にログインしたことをウィンドウ "A" に伝える必要があります。これは、Javascript を使用して直接行うか、サーバーに元のページを通知させる (Websocket、comet、ポーリングなどを介して) ことができます。
  • あなたの音楽はウィンドウ「A」でずっと再生されています
于 2012-03-05T09:13:46.373 に答える