Как установить данные пользователя в 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 работать с моим кодом?