Невозможно установить сессионный cookie - PullRequest
0 голосов
/ 02 марта 2020

Я использую реагирование для внешнего интерфейса и nodejs для внутреннего. Когда / логин извлекает API, выдает 200. Когда я пытаюсь получить / домашний маршрут, API выдает 401. Но он работает при использовании Почтальона, то есть в ответ я получаю сессионный повар ie.

Маршруты

router.post("/login",loginController)
router.get("/home",(req,res,next)=>
{
    if(!req.session.username){return res.status(401).send({MSG:"UNAUTHORIZED"})}
    res.send({MSG:"AUTHORIZED"})
})

API входа

const username=req.body.username;
const password=req.body.password;
try
{
 const dbRes=await getRepository(User).createQueryBuilder().where("username=:username",{username:username}).getOne();
 if(!dbRes){return res.status(401).send({MSG:"USER DOES NOT EXISTS."})}
 bcrypt.compare(password, dbRes.passowrd, function(error, result) 
 {
   if(error || !result){return res.status(401).send({MSG:"INVALID CREDENTIALS"})}
   req.session.username=username;
   console.log(req.session);
   return res.status(200).send({MSG:"SUCCESS"});
 });
}
catch(exception){return res.status(500).send({MSG:"DB_ERROR"})}

Входящие вызовы

Вход

async fun_login(data) {
    this.setState({ is_loading: true });
    fetch("http://localhost:8000/login",
      {
        method: 'POST',
        body: JSON.stringify(data),
        headers: { "Content-Type": "application/json" }
      })
      .then(async (response) => {
        this.setState({ is_loading: false });
        let data = await response.json();
        if(response.status!==200){alert(data.MSG)}
        else{this.setState({is_login:true});}
      })
      .catch((error) => {
        this.setState({ is_loading: false });
        alert(error);
      })
  }

Домашняя страница

  componentDidMount()
  {
    fetch("http://localhost:8000/home",
    {
      method:"GET"
    })
    .then(async (response)=>
    {
      console.log(await response.json());
    })
  }
...