当我从Reaction前端发送请求但在后端工作时,如何修复身份验证不起作用?

xriantvc  于 2022-10-22  发布在  React
关注(0)|答案(1)|浏览(90)

所以我有一个在本地主机上与API交互的应用程序,我使用的是Express、MongoDB和Reaction作为前端。Passport本地身份验证身份验证。当我在Reaction中使用Fetch API时,我遇到了身份验证不持久的问题。当我使用POSTMAN发出POST请求时,一切正常,我的身份验证状态返回TRUE。可以肯定的是,Passport初始化是正确的,因为在 Postman 中它工作得很好。令人困惑的是,我对两者都使用相同的身体。以快递形式发布请求:

router.post('/login', user_controller.user_login_post, (req, res) => {
  console.log(req.body);
  if (!req.user) {
    console.log('User not found!');
    res.send(req.body);
  } else {
    console.log('Signed in');
    res.send(req.body);
  }
});

控制器中的LOGIN_POST:

exports.user_login_post = passport.authenticate('local');

Auth checking in express/passport:

app.get('/api/checkauthentication', (req, res) => {
  req.isAuthenticated()
    ? res.status(200).json({ authenticated: true })
    : res.status(401).json({ authenticated: false });
});

Function I'm calling on submit in React:

  const login = (data) => {
    fetch('/api/users/login', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(data),
      credentials: 'include',
    })
      .then((response) => response.json())
      .then((data) => console.log('DATA: ', data))
      .catch((err) => {
        console.log('Error: ', err);
      });
  };

Also 'Signed in' gets logged out but auth only persists when I make the request from postman.

o3imoua4

o3imoua41#

出现此问题是因为您使用的是本地主机。希望它能帮到什么人。

相关问题