提问人:LeeDyer 提问时间:11/14/2023 最后编辑:Michel FloydLeeDyer 更新时间:11/15/2023 访问量:48
为什么每次我提出请求时,我的会话 ID 都会更改?
Why does my session ID change every time I make a request?
问:
每次我提出请求时,我都会获得唯一的会话 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)
}
});```
答: 暂无答案
评论