2011-12-17 58 views
4

嗨我正在使用快速框架,使節點中的網站。我正在嘗試使用facebox提供一個可以登錄的框,以便網站上的音樂不必停止播放。ExpressJS/Node ajax登錄

我正在使用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'); 
           } 
        } 
     } 
    }); 

回答

1

如果您想讓您的用戶能夠通過Everyauth登錄無需你的音樂停止,那麼你是無法和facebox燈箱做到這一點。你需要AJAX來保持你的頁面加載(因此你的音樂播放),但OAuth不能處理AJAX,因爲它依賴於重定向。

你需要做這樣的事情:

  • 當用戶點擊登錄頁上的「A」,打開一個新的彈出窗口中的「B」指向您的登錄過程
  • Everyauth將窗口中的「B」重定向到相關的OAuth提供
  • 用戶將進行身份驗證並授予權限
  • 窗口「B」將被重定向到您的網站
  • 你需要拿起從過程和結束彈出式窗口「B」需要與用戶已成功登錄的窗口「A」進行通信。您可以直接做到這一點的JavaScript,或讓服務器通知原始頁面(透過WebSocket,彗星,投票等)
  • 你的音樂將一直播放的整個時間窗口「A」