请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

req.session undefined 可能是因为data为空,但是找不出data为空的原因

// router/user.js
const {SuccessModel,ErrorModel} = require('../model/resModel')
const {login} = require('../controller/user')
const {set} = require('../db/redis')

const handelUserRouter = (req,res) => {
  const method = req.method       // GET POST

  // 登录(api/user/login)
  if(method === "GET" && req.path === "/api/user/login"){
   const {username,password} = req.query
   const result = login(username,password)
   return result.then(data=>{
     if(data.username){
      console.log('data ===>'+ data)
      // 设置session
      req.session.username = data.username
      req.session.realname = data.realname
      // 同步到redis中,将session放到redis中与sessionId关联起来
      set(req.sessionId,req.session)
      return new SuccessModel()
     }
     return new ErrorModel('登录失败')
   })
  }

  // 登录验证测试
  if(method === "GET" && req.path === '/api/user/login-test'){
    if(req.session.username){
      return Promise.resolve(
        new SuccessModel({
          session: req.session
        })
      ) 
    }
    return Promise.resolve(
      new ErrorModel('登录失败'))    
  }
}

module.exports = handelUserRouter

// controller/user.js

const {exec} = require('../db/mysql')

const login = (username,password) => {
  const sql = `select username,realname from users where username='${username}' and password='${password}'`
  return exec(sql).then(rows => {
    return rows[0] || {}
  })
}

module.exports = {
  login
}

图片描述

使用redis之前可以获取到data,使用redis后就获取不到data了,找不到原因,请老师帮忙看一下问题出在哪里

正在回答

2回答

看你截图,data 打印出了 [object Object] 了呀,里面的值是什么?

1 回复 有任何疑惑可以回复我~
  • 提问者 Reagen #1
    找到原因了老师,是因为忘了初始化`req.session = {}`,data是已经获取到了
    回复 有任何疑惑可以回复我~ 2019-09-20 11:18:22
菜鸟x 2019-09-20 11:20:49

使用redis之后出问题,那你应该检查redis的代码有没有写错。

1 回复 有任何疑惑可以回复我~
  • 提问者 Reagen #1
    谢谢,问题已经找出来了(๑>ڡ<)☆
    回复 有任何疑惑可以回复我~ 2019-09-20 11:42:33
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信