ExpressJS / Node ajaxlogin

您好我正在使用快速框架在节点中创build一个网站。 我正在尝试使用facebox提供一个可以login的框,以便网站上的音乐不必停止播放。

我正在使用mongoose-auth / everyauth进行身份validation,并且无法弄清楚这是如何完成的。

我需要能够呈现login页面作为一个部分我相信。 我有以下几点:我认为使用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'); } } } }); 

如果你希望你的用户能够通过Everyauthlogin而不停止你的音乐,那么你就不能使用像facebox这样的灯箱。 你需要AJAX来保持你的页面加载(因此你的音乐播放),但OAuth不工作AJAX,因为它依靠redirect。

你需要做这样的事情:

  • 当用户点击login页面“A”时,打开一个新的popup窗口“B”指向您的login过程
  • Everyauth会将窗口“B”redirect到相关的OAuth提供程序
  • 用户将authentication并授予权限
  • 窗口“B”将被redirect回您的网站
  • 你需要拿起进程的结束,并从popup式窗口“B”你需要沟通到窗口“A”,用户已成功login。 你可以直接用Javascript做,也可以让服务器通知原始页面(通过websockets,comet,polling等)
  • 你的音乐将一直播放在窗口“A”