2015-05-06 40 views
2

我正在編寫一個基於SQL Server,ExpressJs,NodeJS,AngularJs的應用程序,我是一個快速入門者,我需要處理會話,所以我一直在考慮PassportJs,我無法找到將SQL Server與PassportJs集成的文檔,所以我我很困惑,我一直在努力,但我不明白的是,我已經建立了我的快遞發電機的應用程序,所以這是我的app.js如何使用SQL Server配置Passportjs?

護照要求:

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

路線:

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

快遞會話:

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

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

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

護照INIT:

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

這是我在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); 
      } 
     }); 

    } 
    )); 
}; 

正如你可以看到我已經寫了一個模塊來執行SQL服務器存儲過程,當我在互聯網上搜索passportjs通常與Mongo集成時,我不知道如何處理passport.serializeUserpassport.deserializeUserf與SQL Server聯合。

這是我在路線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; 

當我發送POST請求的服務器沒有返回一個錯誤,但不跑我LocalStrategy。

回答

1

使用谷歌搜索,我發現這個帖子Understanding passport.js authentication flow,由於該鏈接說,該autor解釋哪個是passportJs流,我有一些錯誤,除非你定義的用戶名和密碼字段的名稱,你必須發送他們在後這req.body.usernamereq.body.password,那是我的錯誤之一,我在處理這樣的序列化和反序列化功能:

serializeUser功能

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

deserializeUserfunction

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