//登录 app.post('/passport/login', (req, res) => { var username = req.body.username var password_hash = req.body.password var remember = req.body.remember var sqlStr_1 = 'select *from info_user where nick_name=? and password_hash=? and username=?' db.query(sqlStr_1,[username,password_hash,username] , (err, results) => { // console.log(results) if(err)return res.send({status:1,message:err.message}) if (results.length !== 1) return res.send({status:1,message:'用户名或密码不正确'}) res.send({status:0,message:'登录成功'}) // console.log(results) req.session['user_id']=results[0].id; console.log(results[0].id) }) })在使用node.js进行登录时,在登录成功后,把从mysql数据库中查询到的用户信息中的id保存到了session中,在判断用户是否登录的接口中,我想要获取到session中的id,根据id 查询用户的信息,但我使用let user_id=req.session['user_id']获取保存在session中的id时,得到的结果是undefined app.get('/',(req,res)=>{ // 拿到session中的user_id,用户是否登录 let user_id = req.session['user_id'] console.log(user_id) // let result=[]; // if(user_id){ let sql='select *from info_user where id=?' db.query(sql,[user_id],(err,result)=>{ if(err) throw err; console.log(result); let data={ user_info:result[0] ? { nick_name:result[0].nick_name, }:false } res.render('news/index',data); }) // } //拿到数据库中的id的用户信息 }) 是什么原因
时间: 2023-07-16 10:17:32 浏览: 95
express后台中post请求接收数据req.body为空
5星 · 资源好评率100%
这个问题可能是因为在登录成功后,session的设置不正确导致的。请确保在登录成功后,正确地设置了session,例如:
```
req.session.user_id = results[0].id;
```
然后,在获取session值时,使用正确的语法:
```
let user_id = req.session.user_id;
```
如果仍然无法获取到session值,请检查是否正确配置了session中间件。例如:
```
const session = require('express-session');
app.use(session({
secret: 'your_secret_key',
resave: false,
saveUninitialized: false
}));
```
如果仍然无法解决问题,请提供更多错误信息或代码片段以便更好地排除问题。
阅读全文