//登录 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 浏览: 44
这个问题可能是因为在登录成功后,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
}));
```
如果仍然无法解决问题,请提供更多错误信息或代码片段以便更好地排除问题。
相关问题
//引入express模块 var express = require('express'); //创建web服务器对象 var app = express(); //静态资源处理 app.use( express.static('public')); //解析浏览器发来的url编码数据和json数据 app.use( express.urlencoded({ extend:false })); app.use( express.json()); //设置允许跨域 app.all('*',(req,res,next)=>{ res.setHeader('Access-Contorl-Allow-Origin','*'); res.setHeader('Access-Contorl-Allow-Headers','Content-Type'); next(); }); //处理post请求 app.post('/login',(req,res)=>{ //服务器保存的用户和密码 var data = { admin:'123456', teach1:'a12345', stu1:'b11111' }; var result = { code:0, msg:'登陆失败'}; //获取请求参数 var username = req.body.username; var password = req.body.password; //遍历data对象 for(k in data){ if( k == username && data[k]==password ){ result.code = 1; result.msg = '登陆成功'; break; } } res.send(result); }); //监听3000端口 app.listen(3000, () =>{ console.log('服务器启动成功...'); });这个有问题吗
这段代码存在一个拼写错误:`Access-Contorl-Allow-Origin` 应该是 `Access-Control-Allow-Origin`。另外,`Access-Contorl-Allow-Headers` 也存在相同的拼写错误,应该改为 `Access-Control-Allow-Headers`。这两个错误可能会导致跨域请求失败。
userRouter.post("/register", upload.single("avatar"), async (req, res) => {
这段代码看起来是一个用户注册的路由处理函数。它使用了POST方法,并且注册的路由路径是"/register"。同时,它使用了一个名为"avatar"的文件上传中间件(upload.single)来处理用户上传的头像文件。这个路由处理函数使用了异步函数(async),意味着它可能会涉及到一些异步操作。在函数体内部可能会有一些注册用户的逻辑代码。最后,它使用了"res"对象来发送响应给客户端。