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

dkqlctbz  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(119)

我在项目周的中间,到目前为止,我已经能够直接注册的形式,以新注册的用户的个人资料,但没有同样的运气与现有用户登录。
这是我的代码,它存在于我的前端文件中的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);
  }
});
czfnxgou

czfnxgou1#

试试这个

window.location.replace(`${window.location.origin}/profile`);

相关问题