Я использую реагирование для внешнего интерфейса и 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());
})
}