Passport Socket Warehouse Privacy

I was wondering how to configure passport.socketio .

I read the docs, but I can still plunge into how to set the store property.

I am using passport-local .

Here is my code (relevant sections):

Some configuration:

 app.use( express.cookieParser() ); app.use(express.methodOverride()); // use express.session before passport, so that passport session will work app.use(express.session({ secret: 'somerandomcod3' })); // Initialize Passport! Also use passport.session() middleware, to support // persistent login sessions (recommended). app.use(passport.initialize()); app.use(passport.session()); 

passport .socketio config

  io.set("authorization", passportSocketIo.authorize({ cookieParser: express.cookieParser, key: 'express.sid', secret: 'somerandomcod3', store: express.session, // not working tried also a couple others fail: function(data, accept) { accept(null, false); }, success: function(data, accept) { accept(null, true); } })); 

my local strategy

 var LocalStrategy = require('passport-local').Strategy ; passport.use(new LocalStrategy(function(username, password, done) { db.userModel.findOne({ username: username }, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Unknown user ' + username }); } user.comparePassword(password, function(err, isMatch) { if (err) { return done(err); } if(isMatch) { return done(null, user); } else { return done(null, false, { message: 'Invalid password' }); } }); }); })); 

So the question is, or better yet, how can I get session storage.?!

+4
source share
1 answer

A store may have several meanings. The default storage is MemoryStore or express.session.MemoryStore if you want an exact link.

MemoryStore is great for dependency-free sessions, but they have the disadvantage that if your node process restarts, you lose all your sessions. Basically, this is terrible for any build, so if this is a serious application, you should take a look at this question about different session stores .

What I consider relevant parts of your code should look like this:

 var express = require("express") , app = express() , sessionStore = new express.session.MemoryStore(); //or some other kind of store app.use(express.session({ secret: 'somerandomcod3', store: sessionStore})); io.set("authorization", passportSocketIo.authorize({ cookieParser: express.cookieParser , key: 'express.sid' , secret: 'somerandomcod3' , store: sessionStore , fail: function(data, accept) { accept(null, false); } , success: function(data, accept) { accept(null, true); } })); 

Hope you now have a better understanding :)

+1
source

Source: https://habr.com/ru/post/1501327/


All Articles