Note that there are some explanatory texts on larger screens.

plurals
  1. POPassport deserialize calls twice per each request
    primarykey
    data
    text
    <p>When I open any url in my node js + passport app I have 2 request for database (deserialze method call probably).</p> <p><strong>My log:</strong></p> <pre><code>NEW QUERY____________________ SELECT * FROM users WHERE id=$1 [ '1' ] GET / 200 248ms - 829b NEW QUERY____________________ SELECT * FROM users WHERE id=$1 [ '1' ] GET /stylesheets/style.css 404 3ms </code></pre> <p><strong>Deserializtation method and middleware:</strong></p> <pre><code>app.configure(function() { // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.static(path.join(__dirname, 'public'))); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.cookieParser()); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(express.session({ secret: "thisismysecretkey", store: new RedisStore({ host: 'localhost', port: 6379, client: redisClient }) })); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); }); passport.serializeUser(function(user, done){ done(null, user.id); }); passport.deserializeUser(function(id, done){ user.get(id, function(err, user){ done(err, user); }); }); </code></pre> <p>It seems like this <a href="https://stackoverflow.com/questions/15213484/passport-deserializeuser-executing-a-db-sequelize-command-for-each-http-reques">issue</a> but it is not working for me.</p> <p><strong>I have working authentication with passport js it looks a bit scared:</strong></p> <pre><code>exports.authenticate = function (req, res) { var form = new multiparty.Form(); form.parse(req, function(err, fields) { var userEmail = fields.email[0]; var userPassword = fields.password[0]; if (err) throw err; userProvider.isBlockedEmail(userEmail, function(err, blocked) { if (err) throw err; if (blocked) { res.send({error: true, description: 'you did too much attempts'}); } else { userProvider.authenticate(userEmail, userPassword, function (err, user) { if (err) throw err; else if (user === undefined) res.send({error: true, description: 'wrong login or password'}); else if (user) { req.login(user, function (err) { if (err) throw err; else if (user.banned === true) res.send({error: true, description: 'access denied'}); else { userProvider.resetAttemptsCounter(userEmail, function(err) { if (err) throw err; res.send(req.user); }); } }); } else { userProvider.checkAndBlock(userEmail, function(err, isBlocked, descriptions) { if (err) throw err; if (isBlocked) { res.send({error: true, description: descriptions}); } else { userProvider.increaseAttemptsCounter(userEmail, function(err) { if (err) throw err; res.send({error: true, description: 'wrong login or password'}); }); } }); } }); } }); }); </code></pre> <p>};</p> <p><strong><em>Please help me to avoid this overhead.</em></strong></p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload