https://github.com/artema/passport.socketcluster
SocketCluster Passport.js authentication middleware.
https://github.com/artema/passport.socketcluster
Last synced: 14 days ago
JSON representation
SocketCluster Passport.js authentication middleware.
- Host: GitHub
- URL: https://github.com/artema/passport.socketcluster
- Owner: artema
- Created: 2015-01-01T20:55:03.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-01-02T21:13:11.000Z (over 10 years ago)
- Last Synced: 2025-04-13T14:48:35.566Z (about 2 months ago)
- Language: JavaScript
- Homepage: http://abashev.com/authentication-of-socketcluster-connections-with-passport-js/
- Size: 277 KB
- Stars: 8
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SocketCluster Passport.js authentication middleware
[](https://nodei.co/npm/passport.socketcluster/)
A [SocketCluster](http://socketcluster.io/) middleware for authenticating socket connections with [Passport.js](http://passportjs.org/).
## Installation
npm install passport.socketcluster
## Usage
//worker.js
var session = require('express-session'),
express = require('express'),
cookieParser = require('cookie-parser'),
passport = require('passport'),
passportSocketCluster = require('passport.socketcluster'),
RedisStore = require('connect-redis')(session);
module.exports.run = function(worker) {
var app = express(),
store = new RedisStore(),
cookieKey = 'session',
cookieSecret = 'keyboard cat';
var server = worker.getHTTPServer(),
sc = worker.getSCServer();server.on('req', app);
app.use(session({
name: cookieKey,
secret: cookieSecret,
store: store
}));
app.use(passport.initialize());
app.use(passport.session());
//Handshake authentication
sc.addMiddleware(sc.MIDDLEWARE_HANDSHAKE, passportSocketCluster.handshake({
cookieParser:cookieParser,
key: cookieKey,
secret: cookieSecret,
store: store,
passport: passport,
callback: function(err, req, user, next) {
if (err) {
return next(err);
}
//Save Passport user for later use
req.session.set('user', user, next);
}
}));
};