如何使用SQL Server配置Passportjs?
我正在基于 SQL Server ,ExpressJs,NodeJS,AngularJs编写应用程序一个快速的初学者,我需要处理会话,所以我一直在思考PassportJs,找不到用于将SQL Server与PassportJs集成的文档,所以我很困惑,我一直在尝试,但是我还没有得到,用express-generator构建了我的应用程序,所以这是我的app.js
I am writing an app based on SQL Server, ExpressJs, NodeJS, AngularJs, I am an express beginner, I need to handle sessions so I have been thinking on PassportJs, I can't find documentation to integrate SQL Server 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
护照要求:
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');
express-session:
express-session:
app.use(session({secret: 'xXxXxXXxX'}));
app.use(passport.initialize());
app.use(passport.session());
app.use('/', routes);
app.use('/login', login);
passport-init:
passport-init:
var initPassport = require('./r12_modulos/sesion/passport-init.js');
initPassport(passport);
这就是我在 passport-init.js
中所拥有的:
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);
}
});
}
));
};
如您所见,我已经编写了一个模块来执行SQL Server存储过程,当我在Internet上进行搜索时,通常将js与Mongo集成在一起,我不知道如何处理 passport.serializeUser
和 passport.deserializeUser
函数与SQL Server一起使用.
As you can see I have wrote a module to execute SQL Server stored procedures, 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 SQL Server.
这就是我在 login.js
路线中所拥有的:
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;
当我发送发布请求时,服务器不会返回错误,但是不会运行我的LocalStrategy.
When I send a post request the server does not return an error but do not run my LocalStrategy.
Google搜索,我发现了这篇帖子了解"passport.js身份验证流程" ,正如该链接所述,指导者解释了哪个是"passportJs"流程,我遇到了一些错误,除非您定义用户名和密码字段的名称,否则您必须像在帖子中那样发送它们这个 req.body.username
和 req.body.password
,这是我的错误之一,我以这种方式处理Serialize和Deserialize函数:
Googling I have found this post Understanding passport.js authentication flow, As the link says the autor explains which is the passportJs flow, I had some errors, unless you define the name of the username and password fields you must to send them in the post like this req.body.username
and req.body.password
, that was one of my errors, I handle the Serialize and Deserialize functions on this way:
serializeUser函数
passport.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);
});