javascript - Node.js 登录身份验证系统未正确存储用户
问题描述
假设我需要passport
,并且正确bcrypt
,此代码应该将用户信息添加到会话中。我终其一生都无法弄清楚哪里出了问题。
文件express-sessions
mysql
App.js
passport.use('local', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true //passback entire req to call back
}, function(req, email, password, done) {
connection.query("SELECT * FROM accounts WHERE email = ?", [email], async(err, rows, fields) => {
//if an error occurrs in mysql
if (err) {
return done(null, false)
connection.end()
}
//if there are no matching entries
if (!rows.length) {
console.log('invalid email')
return done(null, false)
connection.end()
}
//if the passwords don't compare
if (!(await bcrypt.compare(password, rows[0].password))) {
console.log('incorrect password')
done(null, false)
connection.end()
}
//if none of that happens
req.session.user = rows[0]
console.log('logged in')
connection.end()
});
}));
//handles de/serialization of the user data (all integrated from passport docs)
passport.serializeUser(function(user, done) {
return done(null, user.id)
console.log(user.id + "serialized")
});
passport.deserializeUser(function(id, done) {
connection.query("SELECT * FROM accounts WHERE id = " + id, function(err, rows) {
console.log('done' + rows[0])
return done(err, rows[0])
});
});
验证路由代码
router.post('/auth', passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/account'
}));
该代码将用户登录,该用户已登录console
,然后再次将其注销,失败重定向到/account
。我不知道身份验证出了什么问题,感谢您提前回复!
解决方案
您可以使用 express-session 实现相同的目的..
- 安装快速会话:
npm i express-session --save
- 在您的节点应用程序中需要它:
var session = require('express-session');
- 配置:
app.use(session({ secret: "YourSecretKeyGoesHere", saveUninitialized: true, resave: true }));
然后检查你的会话..
推荐阅读
- angular - 在 Angular 9 中更改 webpack 配置
- angular - 角度 9 中的类型 'void' 上不存在属性 'subscribe'
- c++ - 如何写一个能快速复现CPU指令乱序执行的demo?
- python-3.x - 如何在python中加入两个数据框?
- git - 在进行 git pull 时在两个文件之间进行选择
- mysql - JMeter Groovy SQL 批量更新非常慢
- javascript - 找不到 NgModule。使用 skip-import 选项跳过 NgModule 中的导入。离子
- python - 如何使用 Selenium 选择下拉菜单?
- kotlin - 添加额外支架时,Android RecyclerView 滚动无法正常工作
- java - 为什么相对路径不断变化以及如何防止它?