如何使用SQL Server配置Passportjs?

时间:2015-05-06 01:47:08

标签: sql-server node.js express passport.js

我正在编写一个基于SQL Server,ExpressJs,NodeJS,AngularJs的应用程序,我是一个快速的初学者,我需要处理会话,所以我一直在考虑PassportJs,我找不到文档到将SQL Server与PassportJs集成,所以我很困惑,我一直在尝试,但我还没有得到它,我用快速生成器构建了我的应用程序,所以这是我的app.js

护照要求:

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 Server存储过程,当我在互联网上搜索时,通常与Mongo集成,我不知道如何处理passport.serializeUser和{ {1}}与SQL Server一起运行。

这就是我在路线passport.deserializeUser中所拥有的:

login.js

当我发送帖子请求时,服务器不会返回错误但不会运行我的LocalStrategy。

1 个答案:

答案 0 :(得分:1)

谷歌搜索我发现这篇文章Understanding passport.js authentication flow,因为链接说autor解释了哪个是passportJs流,我有一些错误,除非你定义用户名和密码字段的名称,你必须发送它们像req.body.passwordpassport.serializeUser(function (user, done) { console.log('serializing user:', user); done(null, user); }); 这样的帖子,这是我的错误之一,我以这种方式处理序列化和反序列化函数:

序列化用户功能

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

<强> deserializeUserfunction

{{1}}