我在项目周的中间,到目前为止,我已经能够直接注册的形式,以新注册的用户的个人资料,但没有同样的运气与现有用户登录。
这是我的代码,它存在于我的前端文件中的login.js中。
const login = async (event) => {
event.preventDefault();
const email = document.querySelector('#input-email').value;
const password = document.querySelector('#input-password').value;
if (email && password) {
const response = await fetch('/api/users/', {
method: 'POST',
body: JSON.stringify({ email, password }),
headers: { 'Content-Type': 'application/json' },
});
if (response.ok) {
window.location.replace('/profile');
} else {
alert('Failed to log in');
}
}
};
document
.querySelector('.login-form')
.addEventListener('submit', login);
下面是我用于登录后端userRoutes:
router.post('/login', async (req, res) => {
try {
const userData = await User.findOne({ where: { email: req.body.email } });
if (!userData) {
res
.status(400)
.json({ message: 'Incorrect email or password, please try again' });
return;
}
const validPassword = await userData.checkPassword(req.body.password);
if (!validPassword) {
res
.status(400)
.json({ message: 'Incorrect email or password, please try again' });
return;
}
req.session.save(() => {
req.session.user_id = userData.id;
req.session.logged_in = true;
res.json({ user: userData, message: 'You are now logged in!' });
});
} catch (err) {
res.status(400).json(err);
}
});
1条答案
按热度按时间czfnxgou1#
试试这个