Wie update req.Benutzer-session-Objekt festlegen, indem passportjs?

Ich versuche, dies zu tun, da eine Menge Tage, aber alle meine versuche fehl...

Nutzer auf meiner Plattform verbinden Sie mit passportjs Strategien (paypal, facebook, google...).

Wenn der Benutzer angeschlossen ist, Schreibe ich seinen nickname auf der rechten Seite in der Kopfzeile.
Der html-code der html-header wird generiert aus einer LENKER-Vorlage, und wenn diese teilweise serviert von expressjs, sende ich die erf.Benutzer-session-Objekt auf die Vorlage, um zu schreiben, Spitznamen und weitere Informationen...

Durch die Art und Weise, dies funktioniert Super, aber ich habe ein problem, wenn der Benutzer aktualisieren, seinem Spitznamen aus seinem Profil, ich kann nicht update-session-Objekt auf der server-Seite, und wenn der Benutzer die Seite neu laden, die alten nickname wieder erscheint.

Und will ich nicht anfordern, Informationen zum Benutzer aus der DB jedes mal, wenn ein Benutzer eine Seite zu laden, so will ich halten diese config :

//-- Passport session setup
passport.serializeUser(function(user, done) { done(null, user); });
passport.deserializeUser(function(obj, done) { done(null, obj); });

Mein middleware zu setzen einheimischen :

//-- Set accessible datas from the template
res.locals = _.extend(res.locals, {
    user: req.user,
    query: req.url,
    title: app.config.title,
    url: app.config.url
});

Mein fehl :

//Trying to update req.user directly : not persistent
req.user.nickname = User.get('nickname');

//Trying to update passport session : exception error
req.session.passport.user = User.toJSON();

//Trying to replace full session object : not persistent
var session = req.session;
session.passport.user = User.toJSON();
req.session = session;

Jede Anregung ?

Für moment, nur ein ausloggen, dann einloggen funktioniert... Es ist nicht wirklich effizient 🙂

BEARBEITEN :

//Application router
var Router = require('./helpers/router.js');

//Create Express Server
var app = express().http().io();

//-- Init app router
var router = new Router(app);

//-- Framework Middleware
app.use(router.middleware); 

#########################
/***
 * APP ROUTER
 **/

//Export router
module.exports = function(app) {

    //Set instance
    var router = this;

    //Returns routes register & middleware methods
    return {

        //-- Register routes
        register: function() {
            requirejs(['routes'], function(routes) {
                _.each(routes, function(name, route) {
                    app.get(route, function(req, res, next) {
                        requirejs(['views/'+name], function(view) {
                            if ( view ) {
                                var _view = new view(_.extend(req.params, {server: {req: req, res: res, next: next}})); 
                                _view.render(name, req, res, next); 
                            }
                            else {
                                next();
                            }
                        }, function (err) {
                            console.log('error' + err)

                        });
                    }); 
                });
            });
        },

        //-- Bind middleware
        middleware: function(req, res, next) {

            //Get the current path
            console.log("Middleware :: "+req.url);

            //Add user informations
            res.locals = _.extend(res.locals, {
                user: req.user,
                query: req.url,
                title: app.config.title,
                url: app.config.url
            });

            //Go next 
            next(); 

        }
    }
}
Die Frage ist wirklich, wo Sie zuweisen, res.einheimische und erf.Benutzer.nickname. Können Sie zeigen einige mehr code? Welche Funktionen sind diese Linien passiert?
Die middleware genannt, nur nach statischen Routen, setzen Sie die einheimischen für die Ansicht, und fahren Sie mit den vorgegebenen Routen. Ich habe bearbeitet den post, um zu zeigen, mehr code !
mögliche Duplikate von Update angemeldet Nutzerdaten in session

InformationsquelleAutor G33k Labs | 2013-12-11

Schreibe einen Kommentar