ExpressJS / Node AJAX Войти - PullRequest
       16

ExpressJS / Node AJAX Войти

4 голосов
/ 17 декабря 2011

Привет! Я использую Express Framework для создания сайта в узле. Я пытаюсь использовать 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 Ответ

1 голос
/ 05 марта 2012

Если вы хотите, чтобы ваши пользователи могли войти через Everyauth без остановки музыки, вы не можете сделать это с лайтбоксом, таким как facebox.Вам нужен AJAX для поддержания загрузки страницы (и, следовательно, для воспроизведения музыки), но OAuth не работает над AJAX, потому что он использует перенаправления.

Вам нужно сделать что-то вроде этого:

  • Когда пользователь нажимает для входа на страницу «A», откройте новое всплывающее окно «B», указывающее на ваш процесс входа в систему
  • Everyauth перенаправит окно «B» соответствующему провайдеру OAuth
  • Пользователь будет проходить проверку подлинности и предоставлять разрешения
  • Окно «B» будет перенаправлено обратно на ваш сайт
  • Вам нужно выбрать конец процесса и из всплывающего окна«B» необходимо сообщить окну «A», что пользователь успешно вошел в систему.Вы можете сделать это непосредственно с помощью Javascript или позволить серверу сообщить исходную страницу (через веб-сокеты, кометы, опросы и т. Д.)
  • Ваша музыка будет все время воспроизводиться в окне «A»
...