Как установить данные пользователя в cookie с помощью Passport в Node js.

Я использую модуль Passport в узле для реализации системы регистрации / входа в моем приложении, но мне кажется, что я не нашел способа сохранить свои данные пользователя в файле cookie, чтобы я мог сделать вход в систему постоянным.

Мне нужен способ сохранить данные пользователя в файле cookie, чтобы пользователи могли легко заходить на свою страницу, не выходя из системы постоянно.

Вот мой паспортный код для входа в систему:

passport.js.

// load all the things we need
var passport = require('passport');
var LocalStrategy    = require('passport-local').Strategy;
var TwitterStrategy  = require('passport-twitter').Strategy;

// load up the user model
var User = require('../app/model/user');

// load the auth variables
var configAuth = require('./auth');

require('../app/model/upload'); 

 module.exports = function(passport) {

// used to serialize the user for the session
passport.serializeUser(function(user, done) {
            done(null, user.id);
});

// used to deserialize the user
passport.deserializeUser(function(id, done) {
  User.findById(id, function(err, user) {
                done(err, user);
});
        });

passport.use(new TwitterStrategy({

consumerKey : configAuth.twitterAuth.consumerKey,
consumerSecret : configAuth.twitterAuth.consumerSecret,
callbackURL : configAuth.twitterAuth.callbackURL,
userProfileURL: "https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true",
includeEmail: true,
profileFields: ['emails']

},
        function(token, tokenSecret, profile, done) {

            // make the code asynchronous
 // User.findOne won't fire until we have all our data back from Twitter
            process.nextTick(function() {
    User.findOne({ 'twitter.id' : profile.id }, function(err, user) {

                    // if there is an error, stop everything and return that
                    // ie an error connecting to the database
                    if (err)
                        return done(err);

                    // if the user is found then log them in
                    if (user) {
                        return done(null, user); // user found, return that user
                    } else {

                        //declare emails as an array

                        //var emails = []; 
                        // if there is no user, create them
                        var newUser                 = new User();

                        // set all of the user data that we need
                        newUser.twitter.id          = profile.id;
                        newUser.twitter.token       = profile.token;
                        newUser.twitter.username    = profile.username;
                        newUser.twitter.displayName = profile.displayName;
                        newUser.twitter.email       = profile.emails[0].value;  

                         // save our user into the database
                        newUser.save(function(err) {
                            if (err)
                                throw err;
                            return done(null, newUser);

                        });
                    }
                });

        });

        }));

    };

Router.js:

app.get('/auth/twitter', passport.authenticate('twitter')); 

    app.get('/auth/twitter/callback', passport.authenticate( 
        'twitter', {
        successRedirect: '/upload', 
        failureRedirect: '/'}));
}; 

Как заставить cookie работать с моим кодом?

0 ответов

Другие вопросы по тегам