NodeJS中带有MySQL的Passportjs
Passportjs with MySQL in NodeJS
大家好,我试图通过passport.js
连接到MySQL数据库来验证用户,我不知道我的源代码出了什么问题。当我提供正确或错误的用户和密码信息时,会导致重定向失败。有人能告诉我怎么了吗?我是新手。
这是我的源代码:
var flash = require('connect-flash');
var express = require('express');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(function(username,password,done){
connection.query("select * from userinfo where UserName='"+username+"' ",function(err,user){
if(err)
{
return done(err);
}
if(!user)
{
return done(null,false,{message: 'Incorrect user name'});
}
if(user.password != password)
{
return done(null,false,{message: 'Incorrect password'});
}
return done(null,user);
});
}
));
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
app.post('/validates', passport.authenticate('local',{successRedirect: '/productdisplay', failureRedirect: '/validate', failureFlash: true }));
并且闪光消息也不起作用。请告诉我,我几乎在这方面花了很多时间,我没有犯任何错误。我不知道怎么解决这个问题。
要序列化用户,您需要发送user.id而不是用户
passport.serializeUser(function(user, done) {
done(null, user.id);
});
使用MySQL 检查此gist Passport js
查看带有MySQL 的完整节点应用程序Passport js
序列化和反序列化用户并不是一件小事。您应该通过user.id
序列化用户,并通过给定的id
查找该用户来反序列化用户。
顺便说一句,在将密码存储到数据库中之前,请确保对其进行了盐析。存储纯文本密码是一个很大的禁忌。
相关文章:
- 使用jquery将mysql数据获取到新的表行中
- 将地理编码结果转换为php变量以发布到mysql数据库
- 如何使用JS禁用表行,并在MYSQL中插入所选选项
- 从MySQL数据库中获取输入数据需要两次页面刷新
- 将一个表的id与另一个表中的user_id进行匹配,以获取mysql中的记录
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- 如何使用PHP将javascript变量添加到mysql数据库中
- 将phonegap图像发布到php/mysql-图像字段从发布请求中消失
- 在node.js-mysql中执行UPDATE查询不起作用
- 更新从Mysql查询检索到的数据?Node.js节点mysql
- 单击鼠标,用MySQL数据填充html表单输入字段
- 浓缩一系列mySQL查询
- 如何翻译MySQL查询's ResultSet转换为整数
- 如何在mysql查询(NODE.js)中重复使用一个参数
- Node.JS, Angular.JS, MySql,Express.JS
- Ajax和MySql的插入、检查和检索
- onclick->mysql查询->javascript;同一页
- PassportJS/忘记密码:req.user只定义一次
- NodeJS中带有MySQL的Passportjs
- NodeJS passportJS MySQL本地用户身份验证