mardi 5 mai 2015

How to configure Passportjs with mssql?

I am Writting an app based on Mssql,ExpressJs,NodeJS,AngularJs, I am an express begginer, I need to handle sessions so I have been thinking on PassportJs, I can't find documentation to integrate mssql with PassportJs so I am pretty confused, I have been trying but I don't get it Yet, I have built my app with express-generator so this is my app.js

Passport requires

var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var session = require('express-session');

Routes

var routes = require('./routes/index');
var login = require('./routes/login');

express-session

app.use(session({secret: 'xXxXxXXxX'}));

app.use(passport.initialize());
app.use(passport.session());

app.use('/', routes);
app.use('/login', login);

passport-init

var initPassport = require('./r12_modulos/sesion/passport-init.js');
initPassport(passport);

This is what I have in passport-init.js:

var conex = require('../conexion_bd/conex_mssql.js');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;

module.exports = function () {

passport.serializeUser(function (user, done) {
    console.log('serializing user:', user.username);
    done(null, user.username);
});

passport.deserializeUser(function (username, done) {
    done(null,username);
});

passport.use('login', new LocalStrategy({
    passReqToCallback: true
},
    function (req, username, password, done) {

        var _cParameters = [];
        _cParameters.push({ name: 'usuario', type: 'VarChar', value: username });
        _cParameters.push({ name: 'password', type: 'NVarChar', value: password });

        conex.sp_recordset(conex.mssql_conect, 'dbo.sp_sis_loginR12', _cParameters, function (data) {
            if (data[0].response == 1) {
                return done(null, data[0].usuario);
            }
            else {
                return done(null, false);
            }
        });

    }
    ));
};

As you can see I have wrote a module to execute Mssql StoreProcedures, When I am searching on internet passportjs is commonly integrated with Mongo, I don't know how to handle the passport.serializeUser and passport.deserializeUser functions with mssql

This is What I have in the route login.js

var express = require('express');
var passport = require('passport');
var router = express.Router();

router.post('/', passport.authenticate('login', {
    successRedirect: '/',
    failureRedirect: '/login'
}));

module.exports = router;

when I send a post request the server does not return an error but do not run my LocalStrategy.

Aucun commentaire:

Enregistrer un commentaire