为什么每次我提出请求时,我的会话 ID 都会更改?

Why does my session ID change every time I make a request?

提问人:LeeDyer 提问时间:11/14/2023 最后编辑:Michel FloydLeeDyer 更新时间:11/15/2023 访问量:48

问:

每次我提出请求时,我都会获得唯一的会话 ID...

假设我登录并保存 req.session.user,它会适当地记录,但是当他们导航到配置文件时,req.session.user 不再存在,并且 sessionID 现在不同了。 如何确保会话 ID 在用户注销之前不会更改?

这是我设置 req.session.user 的路由之一,之后它会正确记录:

server.post('/login', (req, res) => {
  const { email, password } = req.body;
  db.select('*')
    .from('users')
    .where('user_email', '=', email.toLowerCase())
    .then(userData => {
      if (userData.length === 0) {
        return res.status(400).json('no email Creds Bro');
      }
      const user = userData[0];
      return db.select('hash')
        .from('login')
        .where('user_id', '=', user.user_id)
        .then(loginData => {
          if (loginData.length === 0) {
            return res.status(400).json('Insufficient Creds Bro, database err');
          }
          bcrypt.compare(password, loginData[0].hash, (err, result) => {
            if (result) {
              req.session.user = {user};
              req.session.save((err) => {
                if (err) {
                  console.error('Error saving session:', err);
                  res.status(500).json({ error: 'Internal Server Error' });
                } else {
                  console.log('Session data:', req.session);
                  console.log('Session ID:', req.sessionID);
                  res.json(userData[0]);
                }
              });
            } else {
              res.status(400).json('Very Much Wrong Creds Bro');
            }
          });
        });
    })
    .catch(err => {
      console.log(err)
      res.status(400).json({ error: 'Wrong Creds Bro', details: err });
    });
});

在主页上,我使用身份验证路由来检查会话:

componentDidMount() {
    this.checkAuthentication();
  }

  checkAuthentication = () => {
    fetch('http://localhost:4000/check-session', { credentials: 'include' })
      .then((response) => {
        if (response.status === 204){
          console.log('No user session stored...')
          return null
        } else{
          console.log('Getting there?')
          console.log(response)
          return response.json()
        }
      })
      .then((data) => {
        if (data) {
          console.log(data)
          this.setState({ user: data });
        }
      })
      .catch((error) => {
        console.error('Error checking authentication:', error);
      });
  };

服务器端是:

  if (req.session){
    console.log('session Id', req.sessionID)
    console.log('session = ', req.session)
  }
});```
节点.js PostgreSQL 快速 会话

评论

0赞 LeeDyer 11/14/2023
我注意到它甚至不需要刷新即可丢失变量。我添加了一个按钮来获取“/check-session”路由,但仍然为用户定义。

答: 暂无答案