//登录 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 16:45:14 浏览: 28
可能是因为您在使用session之前没有在中间件中对其进行初始化。请尝试在您的代码中添加以下代码来初始化session:
```
const session = require('express-session');
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: true
}));
```
请注意,`secret`选项应该是一个加密用的字符串,用于保护session数据。
相关问题
userRouter.post("/register", upload.single("avatar"), async (req, res) => {
这段代码看起来是一个用户注册的路由处理函数。它使用了POST方法,并且注册的路由路径是"/register"。同时,它使用了一个名为"avatar"的文件上传中间件(upload.single)来处理用户上传的头像文件。这个路由处理函数使用了异步函数(async),意味着它可能会涉及到一些异步操作。在函数体内部可能会有一些注册用户的逻辑代码。最后,它使用了"res"对象来发送响应给客户端。
app.get("/",(req,res)=>{ res.send({ok:1}) })
这段代码是一个简单的 Express 应用程序路由。当用户通过浏览器访问根路径时,它将返回一个 JSON 对象,其中包含一个名为 "ok" 的键和值为 1。这个路由是通过使用 Express 的 app 对象创建的,其中 app.get() 方法指定了处理 GET 请求的路由。当路由匹配时,它将调用一个回调函数,该函数将处理请求并返回响应。在这种情况下,回调函数只是返回一个 JSON 响应。