sql-server - 如何使用 SQL Server 配置 Passportjs?

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

我正在编写一个基于 SQL Server 的应用程序,ExpressJs,NodeJS,AngularJs,我是一个快速初学者,我需要处理 session ,所以我一直在考虑 PassportJs,我找不到将 SQL Server 与 PassportJs 集成的文档,所以我很困惑,我一直在尝试,但我还不明白,我已经用 express-generator 构建了我的应用程序,所以这是我的 app.js

Passport 要求:

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');

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

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

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

Passport 初始化:
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存储过程的模块,当我在互联网上搜索时,passportjs通常与Mongo集成,我不知道如何处理passport.serializeUserpassport.deserializeUser 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。

最佳答案

谷歌搜索我找到了这篇文章Understanding passport.js authentication flow , 正如链接所说,作者解释了哪个是 passportJs 流程,我有一些错误,除非您定义用户名和密码字段的名称,否则您必须像这样在帖子中发送它们 req.body.usernamereq.body.password ,这是我的错误之一,我以这种方式处理 Serialize 和 Deserialize 函数:

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 - 如何使用 SQL Server 配置 Passportjs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30066094/

相关文章:

node.js - 将 http 重定向到 https express.js

SQL INSERT 命令

sql-server - 对 select 语句使用事务?

sql-server - 带条件的 T-SQL Rank()

node.js - Grunt 连接未启动,错误为 "root path must be a string"

javascript - Node.js https 服务器 : Can't listen to port 443 - Why?

R中的MySQL查询与特定值进行比较

javascript - 被另一个元素 Cypress 覆盖

javascript - req.file 未定义 multer

node.js - 将 bing 搜索嵌入到 Nodejs 中