如何使用把手和 javascript 让我的登录页面指向登录的用户配置文件?

问题描述 投票:0回答:1

我正处于项目周的中间,到目前为止,我已经能够将注册表单定向到新注册用户的个人资料,但对于现有用户来说,登录时却没有同样的运气。

这是我的代码,位于我的前端文件中的 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);

这是我的后端用户登录路径:

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);
  }
});
javascript authentication handlebars.js express-handlebars
1个回答
0
投票

试试这个

window.location.replace(`${window.location.origin}/profile`);
© www.soinside.com 2019 - 2024. All rights reserved.