Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var app = require('express')(),
- server = require("http").createServer(app),
- io = require("socket.io")(server),
- session = require("express-session"),
- FileStore = require('session-file-store')(session),
- options = {secret: "my-secret",
- store: new FileStore,
- resave: true,
- saveUninitialized: true},
- sharedsession = require("express-socket.io-session");
- var passport = require('passport')
- , LocalStrategy = require('passport-local').Strategy;
- var records = [
- { id: 1, username: 'jack', password: 'secret', name: 'Jack'}
- , { id: 2, username: 'jill', password: 'birthday', name: 'Jill'}
- ];
- passport.use(new LocalStrategy(
- function(username, password, cb) {
- console.log("username="+username+" password="+password);
- findByUsername(username, function(err, user) {
- if (err) { console.log("err"); return cb(err); }
- if (!user) { console.log("user not found"); return cb(null, false); }
- if (user.password != password) { console.log("password not match"); return cb(null, false); }
- console.log("login success");
- return cb(null, user);
- });
- }
- ));
- passport.serializeUser(function(user, cb) {
- console.log("serializeUser="+JSON.stringify(user));
- cb(null, user.id);
- });
- passport.deserializeUser(function(id, cb) {
- console.log("deserializeUser="+id);
- findById(id, function (err, user) {
- if (err) { return cb(err); }
- cb(null, user);
- });
- });
- // Attach session
- app.use(session(options));
- // Share session with io sockets
- io.use(sharedsession(session));
- app.use(passport.initialize());
- app.use(passport.session());
- app.get('/', function (req, res) {
- res.sendFile(__dirname + '/index1.html');
- }).post('/login',
- passport.authenticate('local', {failureRedirect: '/'}),
- function(req, res){
- req.session.user = {
- username: "OSK"
- };
- res.sendFile(__dirname + '/home1.html');
- }).get('/logout', function(req, res){
- req.session.destroy(function(err) {
- if(err) {
- logger.error(err);
- }
- else {
- res.clearCookie(options.name, { path: '/' });
- res.redirect('/');
- }
- });
- });
- io.on("connection", function(socket) {
- console.log("new id="+socket.id);
- // Accept a login event with user's data
- socket.on("login", function(userdata) {
- socket.handshake.session.userdata = userdata;
- });
- socket.on("logout", function(userdata) {
- if (socket.handshake.session.userdata) {
- delete socket.handshake.session.userdata;
- }
- });
- });
- server.listen(3000);
- function findByUsername(username, cb)
- {
- console.log("findByUsername");
- for (var i = 0, len = records.length; i < len; i++) {
- var record = records[i];
- if (record.username === username) {
- return cb(null, record);
- }
- }
- return cb(null, null);
- }
- function findById(id, cb)
- {
- console.log("findById");
- var idx = id - 1;
- if (records[idx]) {
- cb(null, records[idx]);
- } else {
- cb(new Error('User ' + id + ' does not exist'));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement