ExpressJS / Node ajax登录

时间:2011-12-17 01:34:12

标签: ajax node.js express mongoose everyauth

您好我正在使用快速框架在节点中创建一个站点。我正在尝试使用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');
                                }
                    }
        }
    });

1 个答案:

答案 0 :(得分:1)

如果您希望用户能够通过Everyauth登录而不停止音乐,那么您就无法使用像facebox这样的灯箱。你需要AJAX来保持你的页面加载(因此你的音乐播放),但OAuth不会因为它依赖于重定向而无法使用AJAX。

你需要做这样的事情:

  • 当用户点击登录页面" A"时,打开一个新的弹出窗口" B"指向您的登录过程
  • Everyauth将重定向窗口" B"到相关的OAuth提供商
  • 用户将进行身份验证并授予权限
  • Window" B"将被重定向回您的网站
  • 您需要选择流程结束并从弹出窗口" B"你需要与窗口沟通" A"用户已成功登录。您可以使用Javascript直接执行此操作,也可以让服务器通知原始页面(通过websockets,comet,polling等)。
  • 您的音乐将一直播放在窗口" A"