如何使用 SQL 服务器配置 Passportjs?
How to configure Passportjs with SQL Server?
我正在编写一个基于 SQL Server、ExpressJs、NodeJS、AngularJs 的应用程序,我是一个 express 初学者,我需要处理会话,所以我一直在考虑 PassportJs,我可以'找不到将 SQL 服务器与 PassportJs 集成的文档,所以我很困惑,我一直在尝试,但我还没有得到它,我已经用 express-generator 构建了我的应用程序,所以这是我的 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);
护照初始化:
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.serializeUser
和 passport.deserializeUser
功能与 SQL 服务器。
这是我在路线 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 请求时,服务器没有 return 错误,但没有 运行 我的 LocalStrategy。
谷歌搜索我发现了这个 post Understanding passport.js authentication flow,正如 link 所说,作者解释了哪个是 passportJs 流程,我有一些错误,除非你定义了用户名和密码字段必须像这样 req.body.username
和 req.body.password
在 post 中发送它们,这是我的错误之一,我以这种方式处理序列化和反序列化函数:
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);
});
我正在编写一个基于 SQL Server、ExpressJs、NodeJS、AngularJs 的应用程序,我是一个 express 初学者,我需要处理会话,所以我一直在考虑 PassportJs,我可以'找不到将 SQL 服务器与 PassportJs 集成的文档,所以我很困惑,我一直在尝试,但我还没有得到它,我已经用 express-generator 构建了我的应用程序,所以这是我的 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);
护照初始化:
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.serializeUser
和 passport.deserializeUser
功能与 SQL 服务器。
这是我在路线 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 请求时,服务器没有 return 错误,但没有 运行 我的 LocalStrategy。
谷歌搜索我发现了这个 post Understanding passport.js authentication flow,正如 link 所说,作者解释了哪个是 passportJs 流程,我有一些错误,除非你定义了用户名和密码字段必须像这样 req.body.username
和 req.body.password
在 post 中发送它们,这是我的错误之一,我以这种方式处理序列化和反序列化函数:
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);
});