//登录 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:'登录成功'}) req.session.userId=results[0].id; console.log(req.session); }) }) app.get('/',(req,res)=>{ // 拿到session中的user_id,用户是否登录 let user_id=req.session.userId 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) { return console.log(err.message); }; let data={ user_info:result.length>0 ? { nick_name:result[0].nick_name }:false }; res.render('news/index',data); }) // } //拿到数据库中的id的用户信息 })我在用户登录成功后把用户的信息保存到了session中,并且可以通过console.lig()打印出数据,但我在app.get()这个接口中通过let user__id=req.sessuon.userId去获取保存在session中的数据时,console.log()的结果为undefined,这是什么原因,
时间: 2023-12-03 07:45:14 浏览: 139
可能是因为您在使用session之前没有在中间件中对其进行初始化。请尝试在您的代码中添加以下代码来初始化session:
```
const session = require('express-session');
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: true
}));
```
请注意,`secret`选项应该是一个加密用的字符串,用于保护session数据。
相关问题
//引入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`。这两个错误可能会导致跨域请求失败。
阅读全文